django项目之官网需求分析实现

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/Burgess_zheng/article/details/86755851

上一篇:Django总目录篇 点击跳转

目录


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导入腾讯视频

Djangoadmin后台管理

使用Django框架基于表数据前后端交互就实现了官网项目(可根据自己的需求设计前端需求的内容)

上一篇:Django总目录篇 点击跳转
 

猜你喜欢

转载自blog.csdn.net/Burgess_zheng/article/details/86755851