首页IT科技项目前期准备阶段怎么写(bbs项目前期准备和表设计)

项目前期准备阶段怎么写(bbs项目前期准备和表设计)

时间2025-05-04 15:29:14分类IT科技浏览6835
导读:一、前期准备 1.新建一个django项目 2.连接mysql数据库(注意需要在...

一            、前期准备

1.新建一个django项目 2.连接mysql数据库(注意需要在init文件里面书写target="_blank">import pymysql)               ,告诉django使用pymysql连接数据库 3.静态文件路径在settings里配置一下                    ,并且在项目文件夹下新建一个静态文件夹

二                     、bbs项目表设计

做一个项目最首要的表的设计      ,一个表设计不好           ,后续开发的地基就不牢!

""" 1.用户表:要继承AbstractUser类 扩展字段: phone:用户电话 avatar:用户头像 create_time:创建时间 2.个人站点表:用户输入什么url就跳转到对应的站点 字段: site_name:站点名称 site_title:站点标题 site_theme:站点主题 3.文章表: 字段: title:文章标题 desc:文章简介 content:文章内容 create_time:发布时间 下述三个字段虽然可以从其他表中获取                     ,但是频繁的跨表查询效率较低         , 可以直接在文章表里设计该字段       ,点赞数+1时只要同步给文章表里的该字段+1就行!(数据库字段优化) up_num:点赞数 down_num:点踩数 comment_num:评论数 4.文章分类表: 字段: name:分类名 5.文章标签表: 字段: name:标签名 6.点赞点踩表:记录了哪个用户给哪个文章点赞还是点踩 字段: user:用户主键值 ForeignKey(to=UserInfo) article:文章主键值 ForeignKey(to=Article) is_up:是否点赞(布尔值字段类型) is_down:是否点踩(布尔值字段类型) 7.评论表:记录哪个用户给哪个文章评论了什么内容 字段: user:用户 ForeignKey(to=UserInfo) article:文章 ForeignKey(to=Article) content:评论内容 comment_time:评论时间 # 评论内容有跟评论和子评论的区别                      ,跟评论是直接评论文章的            ,子评论是评论跟评论的 parent:自关联 ForeignKey(to=Comment   ,null=True) to里面也可以写成self表示自己关联自己 """

七张表之间的关系

1.用户表和个人站点表:一对一关系                      ,外键建在用户表 2.个人站点表和文章标签表:一对多关系               ,外键建在文章标签表 3.个人站点表和文章分类 表:一对多关系,外键建在文章分类表 4.个人站点和文章表:一对多关系                   ,外键建在文章表 5.文章表和文章标签表:多对多关系,外键建在文章表 6.文章表和文章分类表:一对多关系                   ,外键建在文章分类表

接下来   ,我们就可以在models.py里创建对应的表了!

bbs项目表创建源码 from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. # 1        、用户表:继承AbstractUser类               ,需要先导入这个类 class UserInfo(AbstractUser): phone = models.BigIntegerField(verbose_name=电话,null=True) avatar = models.FileField(upload_to=avatar/,default=avatar/default.png,verbose_name=头像) """ 给avatar字段传文件对象                    ,该文件会自动保存到upload_to=avatar/指定的文件夹下      ,这个文件夹需要自己在项目文件夹下创建 数据库里的avatar字段只保存文件路径           ,同时可以设置一个默认头像 """ create_time = models.DateTimeField(auto_now_add=True,verbose_name=创建时间) # 用户表与个人站点表一对一关系                     ,外键建在用户表 blog = models.OneToOneField(to=Blog,on_delete=models.CASCADE,null=True) # 2         、个人站点表 class Blog(models.Model): site_name = models.CharField(verbose_name=站点名称,max_length=64) site_title = models.CharField(verbose_name=站点标题,max_length=64) site_theme = models.CharField(verbose_name=站点主题,max_length=256) # 存的是css                    、js样式的路径 # 3            、文章表 class Article(models.Model): title = models.CharField(verbose_name=文章标题,max_length=64) desc = models.CharField(verbose_name=文章摘要,max_length=256) content = models.TextField(verbose_name=文章内容) create_time = models.DateTimeField(verbose_name=创建时间,auto_now_add=True) # 数据库字段设计优化 up_num = models.IntegerField(verbose_name=点赞数,default=0) down_num = models.IntegerField(verbose_name=点踩数,default=0) comment_num = models.IntegerField(verbose_name=评论数,default=0) # 个人站点表和文章表一对多关系         ,外键建在文章表 blog = models.ForeignKey(to=Blog,on_delete=models.CASCADE,null=True) # 文章表和文章分类表是一对多关系       ,外键建在文章表 category = models.ForeignKey(to=Category,null=True,on_delete=models.CASCADE) # 多对多关系表的外键 tag = models.ManyToManyField(to=Tag,through=Article2Tag,through_fields=(article,tag)) # 通过Article2Tag这个张表查article就把Article2Tag里的article字段放前面 # 文章表和标签表的多对多表创建                      ,采用的是半自动的方式            ,利用扩展自动和查询 class Article2Tag(models.Model): article = models.ForeignKey(to=Article,null=True,on_delete=models.CASCADE) tag = models.ForeignKey(to=Tag,null=True,on_delete=models.CASCADE) # 4      、文章分类表 class Category(models.Model): name = models.CharField(verbose_name=分类名,max_length=32) # 个人站点表和文章分类表是一对多关系   ,外键建在文章分类表 blog = models.ForeignKey(to=Blog,null=True,on_delete=models.CASCADE) # 5                   、文章标签表 class Tag(models.Model): name = models.CharField(verbose_name=标签名,max_length=32) # 个人站点表和文章标签表是一对多关系,外键建在文章标签表 blog = models.ForeignKey(to=Blog,null=True,on_delete=models.CASCADE) # 6                、点赞点踩表 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() is_down = models.BooleanField() # 7   、评论表 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=256) create_time = models.DateTimeField(verbose_name=评论时间,auto_now_add=True) # 子评论                      ,自关联 parent = models.ForeignKey(to=self,on_delete=models.CASCADE)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linuxssh远程登录命令 密码(Linux中rsh远程shell命令的使用技巧解析) 怎样查看索引(详解Linux系统中inode索引节点已满问题的解决方法)