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) #自关联字段
models中建表

注意:建好后,执行数据库的迁移命令

第三步:写功能:先导入from app01 import views

1.注册功能(用forms组件)

01、写forms组件

先建一个在应用下建一个py文件写forms组件(写类,类似于写models类。写钩子函数,要导入models)

作用是:校验用户提交的数据是否正确,并把不符合要求的数据给予 错误提示信息。

02、写views文件,导入写好的forms组件文件

03、写注册的html,进行静态文件配置。建一个静态static文件夹。永久配置

04、写register.html文件 搭建出注册页面

 

05、点击注册,提交ajax请求

posted @ 2020-01-15 18:28  薛定谔的猫66  阅读(401)  评论(0编辑  收藏  举报