今日内容 BBS博客搭建流程

  • BBS项目表设计及关联

需要开发的功能

-注册功能
-登录功能
-首页:文章展示,导航栏,用户中心,广告位
-个人主页:文章展示,侧边栏过滤(分类,标签,时间)
-文章详情:点赞点踩,评论(父评论,子评论)
-后台管理:这个人文章展示(增加,删除,修改文章)
-发布文章:富文本编辑器,xss攻击处理
技术选型:python3.8 django2.2.2 mysql:5.7 jquery2.x bootstrap

此次搭建这个博客网站我们共需要八张表,有一张隐藏表暂不列出(中间表)
各个表与表之间的关系如图:

  • 搭建流程

1.创建项目

# 第一步:安装djagno 2.2.2
pip3 install django==2.2.2
# 第二步:使用pycharm创建项目
# 第三步:配置文件
	-58行:
    	'DIRS': [os.path.join(BASE_DIR , 'templates')]
"""注意django3.0以上的版本需要添加这行代码否则会报错
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
    ('zh-Hans', _('Chinese')),
]"""
        LANGUAGE_CODE = 'zh-Hans'   # 语言中文
        TIME_ZONE = 'Asia/Shanghai' # 时区使用上海时区
        USE_I18N = True
        USE_L10N = True
        USE_TZ = False

2.创建数据表

用户表

class UserInfo(AbstractUser):
    phone = models.CharField(max_length=32,null=True)
    # 存文件的字段  本质还是varchar,可以把文件自动保存(avatar文件夹下),存文件地址
    avatar = models.FileField(upload_to='avatar', default='avatar/default.png')  # 头像
    blog = models.OneToOneField(to='Blog', on_delete=models.CASCADE,null=True) 

博客表

class Blog(models.Model):
    title = models.CharField(max_length=32,null=True, verbose_name='主标题')
    site_name = models.CharField(max_length=32, null=True, verbose_name='副标题')
    site_style = models.CharField(max_length=32, null=True, verbose_name='个人站点样式')

标签表

class Tag(models.Model):
    name = models.CharField(max_length=32, verbose_name='标签名字')
    # 标签和博客是on_delete可以有很多选项 目前先用级联删除(危险)
    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)

分类表

class Category(models.Model):
    name = models.CharField(max_length=32, verbose_name='分类名字')
    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)

文章表

class Article(models.Model):
    title = models.CharField(max_length=32, verbose_name='文章名字')
    desc = models.CharField(max_length=32, verbose_name='文章摘要')
    content = models.TextField(verbose_name='文章内容') # 大文本
    creat_time = models.DateTimeField(auto_now_add=True, verbose_name='文章创建时间')

    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)
    category = models.ForeignKey(to='Category', on_delete=models.CASCADE)
    # 多对多关系,需要创建第三张表,
    #   -django的orm的ManyToManyField字段可以自动创建第三张表(ArticleToTag)
    #   -手动创建第三张表:ManyToManyField一定要加两个参数,through=中间表,through_fields通过哪两个字段关联
    tag = models.ManyToManyField(to='Tag')

点赞表

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(verbose_name="点赞或点踩")
    create_time = models.DateTimeField(auto_now_add=True)

评论表

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(max_length=64, verbose_name='评论的内容')
    create_time = models.DateTimeField(auto_now_add=True)
    parent = models.ForeignKey(to='self', on_delete=models.CASCADE, null=True)
posted @ 2022-09-14 18:55  你好你好你好丶  阅读(97)  评论(0)    收藏  举报