前言:新项目开发流程:

  1. 需求分析报告(组员:系统架构师  、产品运营 、开发人员小组长)
    在跟顾客谈要求以前 ,会大概先掌握顾客的要求,随后自身先设计方案一套比较好写的计划方案。跟顾客沟通交流中正确引导顾客往大家以前想好的计划方案上边靠,产生一个基本的计划方案

  2. 项目设计(组员:系统架构师挑选新项目的总体设计方案自然环境)

    • 计算机语言:Java、Python 、PHP 、C 等;
    • 架构挑选:Django、Flask、SpringMVC等
    • 数据库查询挑选
      • 行为主体数据库查询:MySQL 、SQL server、Oracle;
      • 缓存文件数据库查询:redis/mongodb/memcacha;
    • 作用区划:将全部新项目区划成数个程序模块
    • 找开发设计组长汇报工作:给每一个成分发每日任务
    • 新项目价格/费用预算
      • 技术专业必须多少人、多少天 、开发设计的机器设备成本费
      • 产品运营方面:售后服务、在线客服
    • 企业方面确定 ,产品运营去跟顾客沟通交流 。事后必须加作用 ,再次加价。
  3. 排序开发设计:小组长找成员汇报工作,分配分别的程序模块
    实际上便是在系统架构师设计方案好的架构里边撰写编码,在敲代码的情况下 ,写完必须自身先检测是不是有bug。如果是一些不言而喻的bug,你没有防止只是立即交到了检测单位测出去,那么你很有可能就必须扣满业绩考核了(一定要跟检测组混熟);

  4. 检测:检测单位机构组员对控制模块、编码开展模块 、作用、工作压力等检测 。

  5. 交货发布

    1. 交到另一方的运维管理工作人员;
    2. 立即发布到大家的网络服务器上并扣除一定的维护费;

一、数据库表的设计方案

一个新项目中最重要的并不是领域模型的撰写 ,只是早期的表构造的设计方案,仅有将表设计方案好啦,事后的作用撰写才可以圆满完成 。不然会反复改动表 ,既危害开发设计的高效率,也会造成写好的业务流程编码失效。

1. 客户表:承继AbstractUser

  • 拓展字段
    1. phone:联系电话
    2. avatar:用户头像
    3. create_time:建立時间
  • 外键字段:【一对一】本人站点表

2.本人站点表

  • 业务流程字段
    1. site_name:站点名字
    2. site_title 站点题目
    3. site_theme 站点款式(储存一个CSS/JS文档)

3.文章标识表

  • 业务流程字段:name 标识名

  • 外键字段:【一对多】本人站点

4.文章类型表

  • 业务流程字段:name 类型名
  • 外键字段:【一对多】本人站点

5.文章表

  • 业务流程字段

    1. title:文章题目
    2. desc :文章介绍/引言
    3. content:文章內容
    4. create_time:发布时间
  • 据库字段设计方案提升:关注点赞数 、点踩数、评论数(尽管这三个字段能够从别的表里边能够ORM跨表查看测算得到,可是经常跨表高效率减少)
    5. up_num:关注点赞数
    6. down_num:点踩数
    7. comment_num:评论数

  • 外键字段

    • 【一对多】本人站点
    • 【多对多】文章标识表
    • 【一对多】文章归类

6.关注点赞点踩表:用于纪录哪一个客户给哪篇文章点了赞還是点了踩(多对多关系表)

  • 业务流程字段
    • user(客户的主键)
    • article(文章的主键)
    • is_up(一般字段 BooleanFied)

7.文章评论表[comment]:用于纪录哪一个客户给哪篇文章写了什么评论內容

  • 业务流程字段
    • user(客户的主键)
    • article(文章的主键)
    • content:CharField()
    • comment_time:DateField()
    • 自关系
      parent   ForeignKey(to='Comment',null=True)
       ,ORM专业出示的自关系书写
      parent ForeignKey(to='self',null=True)

注:根评论、子评论的定义:根评论便是立即评论当今公布的內容的,子评论是评论他人的评论。

根评论与子评论是一对多的关联

二 、数据库表建立及同歩

因为django内置的sqlite数据库查询对日期不比较敏感,因此大家换为MySQL

from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
"""
    先写一般字段	,以后在写外键字段
"""
class UserInfo(AbstractUser):
    phone = models.BigIntegerField(verbose_name='手机号码',null=True)
    # 用户头像,客户不选择头像图片则用默认头像
    avatar = models.FileField(upload_to='avatar/',default='avatar/default.png')
    """
        给avatar字段发文件目标,该文件会全自动储存到avatar文件下
        随后该字段只储存文件路径avatar/default.png
    """
    create_time = models.DateField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog',null=True,on_delete = models.CASCADE)

class Blog(models.Model):
    site_name = models.CharField(verbose_name="站点名字",max_length=32)
    site_title = models.CharField(verbose_name="站点题目",max_length=32)
    # 简易仿真模拟,了解款式內部基本原理的实际操作
    site_theme = models.CharField(verbose_name="站点款式",max_length=64)
    # 加密存储自定的css/js文件

class Category(models.Model):
    name = models.CharField(verbose_name='文章归类',max_length=32)
    blog = models.ForeignKey(to='Blog',null=True,on_delete = models.CASCADE)

class Tag(models.Model):
    name = models.CharField(verbose_name='文章标识',max_length=32)
    blog = models.ForeignKey(to='Blog', null=True,on_delete = models.CASCADE)

class Article(models.Model):
    title = models.CharField(verbose_name='文章题目',max_length=64)
    desc = models.CharField(verbose_name='文章引言',max_length=255)
    # 文章內容有很多,一般状况下全是应用TextField
    content = models.TextField(verbose_name='文章內容')
    create_time = models.DateField(auto_now_add=True)

    # 数据库查询字段设计方案提升
    up_num = models.BigIntegerField(verbose_name='关注点赞数',default=0)
    down_num = models.BigIntegerField(verbose_name='点踩数',default=0)
    comment_num = models.BigIntegerField(verbose_name='评论数',default=0)
    # 外键字段
    blog = models.OneToOneField(to='Blog', null=True,on_delete = models.CASCADE)
    category = models.ForeignKey(to='Category', null=True,on_delete = models.CASCADE)
    tags = models.ManyToManyField(to='Tag',
                                  through='Article2Tag',
                                  through_fields=('article','tag')
                                 )

class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article',on_delete = models.CASCADE)
    tag = models.ForeignKey(to='Tag',on_delete = models.CASCADE)

class UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo',on_delete = models.CASCADE)
    article = models.ForeignKey(to='Article',on_delete = models.CASCADE)
    is_up = models.BooleanField()  # 传到布尔值	,存0/1

class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo',on_delete = models.CASCADE)
    article = models.ForeignKey(to='Article',on_delete = models.CASCADE)
    content = models.CharField(verbose_name='评论內容',max_length=255)
    comment_time = models.DateTimeField(verbose_name='评论時间',auto_now_add=True)
    # 自关系
    parent = models.ForeignKey(to='self',null=True,on_delete = models.CASCADE)
    # 有一些评论便是根评论

BBS是一个前后左右端不分离出来的全栈开发个人网站新项目,前端和后端都必须自身一步步的进行 。

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归qu快排seo www.sEoguRuBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ√61910465