上一篇:Django总目录篇 点击跳转
目录
Django总目录篇:https://blog.csdn.net/Burgess_zheng/article/details/86751143
Django学会了以后,官网项目就可以使用Django框架很轻松又效率实现前端展现后台内容管理
以下是自己以前实现的官网(个人爱好随便写的),因为前端手写标签+引入bootstrap所以稍微有点丑(可以去买模板更快),不过这不妨碍我们进行需求分析进而表结构设计
大类:首页、核心团队、职员现状、在线视频、常见问题、关于我们、后台管理(admin后台管理不显示)
大类我们就无需表设计了.一般情况大类基本不变,静态即可
首页主要展示:轮播图、最新公告、业务、职员现状、招聘信息、企业合作等
轮播图(这里我是引入bootstrap上的轮播图):
1.图片需具备上线下线功能,所以需要一个状态字段(status)
2.可能上传很多照片,但是轮播图我们可能有数量限制,排位问题,所以需要一个权重字段(weight)
3.需要一个图片名字段(name)
4.管理上传的图片路径我们需要知道,前端才可以调用,所以需要一个图片路径字段(img)
5.一般图片可能有需求进行跳转,所以需要一个跳转字段(href)
6.图片上传的日期也有需求,所以需要一个图片上传日期字典(create_date)最后表代码如下:
class Carousel(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) name = models.CharField(max_length=32, verbose_name='图名',) img = models.ImageField(max_length=64, verbose_name='图片路径',upload_to='./static/imgs/officialwebsite/carousel/') href = models.CharField(max_length=256,verbose_name='跳转链接') create_date= models.DateTimeField(auto_now_add=True) class Meta: db_table = 'Carousel' verbose_name_plural = '轮播图' def __str__(self): return self.name
最新公告
1.公告也需具备上下线功能,所以需要一个状态字段(status)
2.公告很多,但是首页展现的数量限制,排位问题,所以需要一个权重字段(weight)
3.公告标题(title)
4.公告的简介(summary)
5.公告详细(detail)
6.创建时间(create_date)class Notice(models.Model): status_choice = ( (1, '不显示'), (2, '显示'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) title = models.CharField(max_length=16, verbose_name='标题') summary = models.CharField(max_length=256, verbose_name='简介') detail = models.TextField(verbose_name='详情') create_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'Notice' verbose_name_plural = '公告' def __str__(self): return self.title
业务
1.业务需具备上线下线功能,所以需要一个状态字段(status)
2.可能业务众多,但是展现的业务数量有限,排位问题,所以需要一个权重字段(weight)
3.业务也需要有图片,所有我们需要一个图片路径(icon)
4.业务名字字典也是必须有的(name)
5.业务的简介我们也需要有(summary)
6.业务创建时间(create_date)最后表代码如下:
class Professional(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) icon = models.ImageField(max_length=64,verbose_name='图片路径',upload_to='./static/imgs/officialwebsite/progessional/',null=True,blank=True) name = models.CharField(max_length=32,verbose_name='业务名') summary = models.CharField(max_length=256,verbose_name='简介') create_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'Professional' verbose_name_plural = '业务' def __str__(self): return self.name
职员
1.该职员是否离职了,所以需要一个状态字段(status)
2.职员名字(name)
3.职员图片路径(src)
4.职员简介(summary)
5.关联个人链接表外键关联(这个字段可以多种选择的设计,如链接表关联回来也行)(sl)
6.所属部门外键关联(dt)
7.属于什么也为级别的外键关联(pt)
注意:其实部门和职位我们应该是建立多对多关系,然后职员关联多对多表的,这里就没有设置那么复杂了最后表代码如下:
class Staff(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) name = models.CharField(max_length=32,verbose_name='职员名') src = models.ImageField(max_length=64,verbose_name='图片路径',upload_to='./static/imgs/officialwebsite/staff/',null=True,blank=True) summary = models.CharField(max_length=128,verbose_name='简介') sl = models.ForeignKey('Selflinks',on_delete=models.CASCADE) dt = models.ForeignKey('Department',on_delete=models.CASCADE) pt = models.ForeignKey('Position',on_delete=models.CASCADE) create_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'staff' verbose_name_plural = '职员' def __str__(self): return self.name
招聘信息
1.该职位是否招聘中(status)
2.权重字段,排位问题(weght)
3.招聘的职位(post)
4.薪水(salary)
5.招聘需求(summary)
还有很多就不一一列举,如学历需求,招聘地址,经验要求等等最后表代码如下:
class Invite(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) post = models.CharField(max_length=32, verbose_name='职位') salary = models.CharField(max_length=64, verbose_name='薪水') summary = models.CharField(max_length=128,verbose_name='简介') class Meta: db_table = 'Invite' verbose_name_plural = '招聘' def __str__(self): return self.post
企业合作
1.是否合作到期了,所以需要一个状态字段(status)
2.权重字段,到排位问题(weght)
3.企业的链接(link)
4.企业的logo(logo)
5.企业的名称(name)最后表代码如下:
class Cooperation(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) link = models.CharField(max_length=256, verbose_name='企业链接') logo = models.ImageField(max_length=64, verbose_name='企业logo',upload_to='./static/imgs/officialwebsite/cooperation/') name = models.CharField(max_length=256, verbose_name='企业名称') class Meta: db_table = 'Cooperation' verbose_name_plural = '合作企业' def __str__(self): return self.name
主要展现核心团队的管理人员(核心人员的姓名、职位、个人链接,介绍)
调用职员表( 上面有了)
个人链接表(职员关联的外键表)
代码如下:
class Selflinks(models.Model): sina = models.CharField(verbose_name='新浪微博地址', max_length=256) cnblogs = models.CharField(verbose_name='博客园微博地址', max_length=256) video = models.CharField(verbose_name='视频地址', max_length=256) class Meta: db_table = 'Selflinks' verbose_name_plural = '职员个人链接'
展现员工风采使用了图片墙方式(爆破流实现,示例:花瓣网)
滚动条往下拉请求更多指定数量图片
主要展现视频(涉及到组合搜索,以及分页)
如下面的代码:
1.dir方向表(大类) 、class分类表,level难度等级表,video视频表
2.dir方向表和class分类表是多对多关系
3.video视频表只需要外键关联level难度等级表和class分类表即可class Direction(models.Model): """ 方向:弱电 集群 开发 网络 """ name = models.CharField(verbose_name='名称', max_length=32) classification = models.ManyToManyField('Classification') class Meta: db_table = 'Direction' verbose_name_plural = '方向(视频方向)' def __str__(self): return self.name class Classification(models.Model): """ 分类: Linux shell OpenStack Python C C++ java JavaScript Node.js Cad Photoshop ccie SNMP """ name = models.CharField(verbose_name='名称', max_length=32) class Meta: db_table = 'Classification' verbose_name_plural = '分类(视频分类)' def __str__(self): return self.name class Level(models.Model): title = models.CharField(max_length=32) class Meta: verbose_name_plural = '难度级别' def __str__(self): return self.title class Video(models.Model): status_choice = ( (1, '下线'), (2, '上线'), ) status = models.IntegerField(verbose_name='状态', choices=status_choice, default=2) level = models.ForeignKey(Level,on_delete=models.CASCADE) classification = models.ForeignKey('Classification', null=True, blank=True,on_delete=models.CASCADE) weight = models.IntegerField(verbose_name='权重(按从大到小排列)', default=0) title = models.CharField(verbose_name='标题', max_length=32) summary = models.CharField(verbose_name='简介', max_length=32) img = models.ImageField(verbose_name='图片', upload_to='./static/imgs/officialwebsite/video') # img = models.CharField(verbose_name='图片',max_length=32) href = models.CharField(verbose_name='视频地址', max_length=256) create_date = models.DateTimeField(auto_now_add=True) class Meta: db_table = 'Video' verbose_name_plural = '视频' def __str__(self): return self.title
主要展现常见问题,这里我就没有设置表,静态即可(当然设置表更好,企业问题我们还是需要保留,或者不断增加)
主要展现了公司的简介,每天报道,人才招聘,搜后服务,联系我们等等,
使用百度地图API生成的
使用iframe导入腾讯视频
使用Django框架基于表数据前后端交互就实现了官网项目(可根据自己的需求设计前端需求的内容)
上一篇:Django总目录篇 点击跳转