BBS
分析
项目的开发流程
1.需求分析
架构师 + 项目组组长 + 产品经理,架构师提前先设计一下大致的书写流程
2.项目设计:架构师、项目的框架选择、语言选择、数据库选择(主库、从库选择 、缓存数据库)、模块的划分
3.分组开发:架构师找组长开会、组长找组员开会、组员写代码
4.交付测试:需要自己写一些测试脚本 、本地测试,杜绝一些低级的错误
5.项目上线:交给客户的运维或者帮客户上线
注意:数据库的设计是最为重要的!!!
BBS表设计
用户表 里:继承auth_user表、phone、avatar、register_time
个人站点表 里:站点名称、站点标题、站点样式
文章分类表 里:分类名
文章标签表 里:标签名
文章表 里:文章标题、文章摘要、文章详情、创建日期
点赞点踩表 里:user 一对多用户、article 一对多文章、is_up 布尔值字段
文章评论表 里:user 一对多用户、article 一对多文章、content 普通字段、create_time 评论日期、parent ForeginKey(to='文章评论表')、parent ForeginKey(to='self')
一、bbs表与表之间的关系
二、注册功能
前端页面。在register.html文件中写
第一步、先配置数据库
第二步:
在models文件中,建表
from django.db import models # Create your models here. from django.contrib.auth.models import AbstractUser #要想用户表继承auth模块里的auth_user,要先导入AbstractUser.继承的目的是可以不用写基础的字段了 #django就会将userinfo表来替换auth_user表.并且之前auth模块所有的功能不变 参照的也是userinfo表 # 用户表 class UserInfo(AbstractUser): #要去配置文件中配置AUTH_USER_MODEL = 'app01.UserInfo' phone = models.BigIntegerField(null=True) avatar = models.FileField(upload_to='avatar/',default='avatar/default.png') create_time = models.DateField(auto_now_add=True) #设置外键 blog = models.OneToOneField(to='Blog',null=True) #null=True 是为了防止我们录入数据时报错 #站点表 class Blog(models.Model): site_name = models.CharField(max_length=32) site_title = models.CharField(max_length=64) site_theme = models.CharField(max_length=64) #站点主题字段,模拟每个人都有自己的站点样式 #分类表 class Category(models.Model): name = models.CharField(max_length=32) #设置外键 blog = models.ForeignKey(to='Blog',null=True) class Tag(models.Model): name = models.CharField(max_length=32) # 设置外键 blog = models.ForeignKey(to='Blog',null=True) #文章表 class Article(models.Model): title = models.CharField(max_length=64) desc = models.CharField(max_length=254) content = models.TextField() #存大段文本 create_time = models.DateField(auto_now_add=True) #设置外键 category = models.ForeignKey(to='Category',null=True) #一对多关系 tags = models.ManyToManyField(to='Tag',through="Article2Tag",through_fields=('article','tag')) #多对多关系 blog = models.ForeignKey(to='Blog',null=True) #数据库优化设计:这三个字段,只有操作了有关这三个字段的表,这三个字段就要更新一次 comment_num = models.BigIntegerField(null=True) #评论总条数字段 up_num = models.BigIntegerField(null=True) #点赞数字段 down_num = models.BigIntegerField(null=True) #点踩数字段 #多对多的第三张表 class Article2Tag(models.Model): article = models.ForeignKey(to='Article') tag = models.ForeignKey(to="Tag") #点赞点踩表 class UpAndDown(models.Model): user = models.ForeignKey(to='UserInfo') article = models.ForeignKey(to='Article') is_up = models.BooleanField() #传布尔值,存0/1 #评论表 class Comment(models.Model): user = models.ForeignKey(to='UserInfo') article = models.ForeignKey(to='Article') content = models.CharField(max_length=254) comment_time = models.DateField(auto_now_add=True) parent = models.ForeignKey(to='self',null=True) #自关联字段
注意:建好后,执行数据库的迁移命令
第三步:写功能:先导入from app01 import views
1.注册功能(用forms组件)
01、写forms组件
先建一个在应用下建一个py文件写forms组件(写类,类似于写models类。写钩子函数,要导入models)
作用是:校验用户提交的数据是否正确,并把不符合要求的数据给予 错误提示信息。
02、写views文件,导入写好的forms组件文件
03、写注册的html,进行静态文件配置。建一个静态static文件夹。永久配置
04、写register.html文件 搭建出注册页面
05、点击注册,提交ajax请求