首页 > 其他分享 >BBS-个人博客项目完整搭建

BBS-个人博客项目完整搭建

时间:2023-08-14 19:12:22浏览次数:37  
标签:delete verbose name models BBS 博客 null True 搭建

项目开发流程

项目分类

现在互联网公司需要开发的主流Web项目一般分为两类:面向互联网、公司内部管理。

 面向互联网用户:C(consumer)端项目

 公司内部管理:B(business)端项目

还有一类Web应用:基本采用基于角色的权限控制,不同的员工在这套系统中拥有不同的权限,试营业公司内部管理。

# 基于权限的后台关系系统:RBAC权限管理系统

项目开发模式分类

最常见的两类为瀑布开发模式和敏捷开发模式

项目开发流程:

  -立项
  -需求分析
  -原型图(产品画的)
  -切图
  -技术选型,数据库架构设计
  -前后端协同开发
  -上线测试服务器联调
  -测试
  -修改bug
  -上线运行

BBS多人博客项目基本功能和需求

开发任意的项目第一个阶段就是弄清楚你要开发什么功能

一个项目最重要的就是表结构的设计,大部分时间都是用来设计表。

在企业中对于一个完成的项目写代码的事假大概有个30%,其余时间都用来做铺垫

比如:产品需求的确定,技术选型,数据库设计...

BBS数据库表结构设计

 在我们分析完一个项目的需求之后,我们着手开发项目所需要做的第一件事就是设计数据库的表结构及其字段。

用户表(UserInfo)

继承了auth_user这张表,对它进行扩展

字段有:

  phone:手机号

  avatar:头像,存储的是头像地址

  create_time:用户注册时间

具体的表创建如下:

from django.contrib.auth.models import AbstractUser

# 用户表,继承auth_user表
class UserInfo(AbstractUser):
    phone = models.BigIntegerField(verbose_name='手机号', null=True)  # 可以为空
    # 头像,存储的是头像地址,文件路径,该文件会自动存储到avatar文件下,然后avatar字段只保存文件路径
    avatar = models.FileField(upload_to='avatar/', default='avatar/default.png',verbose_name='用户头像')
    # 用户注册时间,会自动添加注册时间
    create_time = models.DateTimeField(auto_now_add=True)
    # 用户表和站点表的关系:一对一,一个用户对应一个个人站点表
    blog = models.OneToOneField(to='Blog', null=True, on_delete=models.CASCADE)

 

个人站点表(Blog)

字段有:

  site_name:站点名称

  site_title:站点标题

  site_theme:站点样式

具体的表创建如下:

# 个人站点表
class Blog(models.Model):
    site_name = models.CharField(max_length=32, verbose_name='站点名称')
    site_title = models.CharField(max_length=32, verbose_name='站点标题')
    # 存css/js文件路径
    site_theme = models.CharField(max_length=64, verbose_name='站点样式')

 

分类表(Category)

字段有:

  name:分类名称

具体的表创建如下:

# 分类表
class Category(models.Model):
    name = models.CharField(max_length=32, verbose_name='分类名称')  # 文章分类
    # 站点表和分类表的关系:一对多,一个站点可以有多个分类
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)

 

标签表(Tag)

字段有:

  name:标签名称

具体的表创建如下:

# 标签表
class Tag(models.Model):
    name = models.CharField(max_length=32, verbose_name='标签名称')  # 文章标签
    # 站点表和标签表的关系:一对多,一个站点可以有多个标签
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)

 

文章表(Article)

字段有:

  title:文章标题

  desc:文章简介

  content:文章内容

  create_time:创建时间

  (数据库优化处理)

  up_num:点赞量

  down_num:点踩量

  comment_num:评论数

具体的表创建如下:

# 文章表
class Article(models.Model):
    title = models.CharField(max_length=64, verbose_name='文章标题')
    desc = models.CharField(max_length=225, verbose_name='文章摘要')  # 文章简介
    # 文章内容有很多 一般情况下都是使用TextField
    content = models.TextField(verbose_name='文章内容')
    create_time = models.DateField(auto_now_add=True, verbose_name='创建时间')
    # 对数据库的优化处理
    up_num = models.IntegerField(verbose_name='点赞数量')
    down_num = models.IntegerField(verbose_name='点踩数量')
    comment_num = models.IntegerField(verbose_name='评论的数量')
    # 外检字段的创建
    # 站点表和文章表的关系:一对多,一个站点可以有多个文章
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)
    # 分类表和文章表的关系:一对多,一个分类里可以有多篇文章
    cate = models.ForeignKey(to='Category', null=True, on_delete=models.CASCADE)
    # 标签表和文章表的关系:多对多,一个文章可以有多个标签,一个标签可以对应多个文章
    # 通过自建第三张表来存储他们的关系
    tag = models.ManyToManyField(to='Tag', through='Article2Tag', through_fields=('article', 'tag'))


# 文章表和标签表关系的第三张表
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)

 

点赞点踩表(UpAndDown)

字段有:

  user:用户id

  article:文章id

  is_up:点赞/点踩(存储布尔值,后端用0,1)

  create_time:用户操作的时间

具体的表创建如下:

# 点赞点踩表
class UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo', null=True, on_delete=models.CASCADE)  # 可以获取到用户id
    article = models.ForeignKey(to='Article', null=True, on_delete=models.CASCADE)
    is_up = models.BooleanField()  # 后端传布尔值,0/1

 

评论表(Comment)

字段有:

  user:用户id

  article:文章id

  content:评论内容

  comment_time:评论时间

  parent_id:根评论id

具体的表创建如下:

# 评论表
class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo', null=True, on_delete=models.CASCADE)
    article = models.ForeignKey(to='Article', null=True, on_delete=models.CASCADE)
    content = models.CharField(max_length=225, verbose_name='评论内容')
    comment_time = models.DateField(auto_now_add=True,verbose_name='评论时间')
    # parent_id = models.ForeignKey(to='Comment',null=True,on_delete=models.CASCADE) # 自关联
    parent_id = models.ForeignKey(to='self', null=True, on_delete=models.CASCADE)

 

标签:delete,verbose,name,models,BBS,博客,null,True,搭建
From: https://www.cnblogs.com/Lucky-Hua/p/17628936.html

相关文章

  • 搭建产品帮助中心,帮助中心重构之路,易于理解和维护!
    帮助中心,顾名思义,就是获取帮助的地方。我行的每一个产品都有其帮助中心。客户在使用我行产品的过程中,遇到任何问题,都可以在帮助中心中寻求帮助。作为产品管理和开发者,可以通过HelpLook可以灵活设置多个使用教程、操作说明、问题解答等文章,快速搭建帮助平台,满足用户使用需求。今天就......
  • 搭建FAQ可不能漏了这些内容
    一个好的FAQ文档是能够解答用户在使用产品或服务时的常见问题,并提供友好的用户体验。不仅如此,还可以减轻客服团队的压力,提高用户满意度,并提供一个方便快捷的自助支持渠道。今天looklook就来和大家聊聊想要搭建FAQ的时候会常出现的内容。搭建FAQ的常见内容1.常见问题列表:列出用户经......
  • BBS-个人博客项目
    BBS-个人博客项目完整搭建项目开发流程项目开发模式分类1、瀑布开发模式瀑布开发模式是一种更倾向于严格控制的管理模式,要求在提出需求之后,充分完成项目的规划,各阶段都要经过严格的评审,只有当一个阶段的需求完成得非常好时才能进入下一个阶段。但是瀑布开发模式开发的失败......
  • BBS
    项目开发流程项目分类主流的web项目一般分为两类:面向互联网用户和公司内部管理面向互联网用户:C(consumer)端项目公司内部管理:B(business)端项目还有一类web应用,基本采用基于角色的权限控制,不同的员工在这套系统中拥有不同的权限,适用于公司内部管理。基于权限的后台关系系统RBA......
  • 李沐动手学深度学习_环境搭建
    一、准备工作以下仅针对windows用户:1.先下载安装Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/讲解视频链接如下:https://www.bilibili.com/video/BV1Z7411L7dy?p=1二、搭建书本所需的环境2.搭建CPU版本mxnet的运行环境:如果你的电脑没有GPU,那么只需要安装CPU......
  • 内网映射神器nps搭建
    在前面的一篇文章中。我们讲到了如何利用frp进行内网映射。使得内网的设备可以通过公网登录。但是frp相对来说都是通过配置命令参数来实现的。对小白而言还是有点挑战,今天来介绍另外一种简单的方法吧。关于NPSnps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp......
  • Python基础day65 BBS个人博客项目完整搭建
    BBS-个人博客项目的完整搭建项目开发流程一、项目分类现在互联网公司需要开发的主流web项目一般分为两类:面向互联网用户,和公司内部管理。面向互联网用户:C(consumer)端项目公司内部管理:B(business)端项目还有一类web应用,基本采用基于角色的权限控制,不同的员工在这套系统......
  • 博客被封-执念放下
    才发现我之前的博客所有人都无法访问,那么分享就没有意义了,未来若大环境好些再分享吧。当我也经历过被同性以男女朋友方式的爱后我能明白你的压力,只是做出的选择不同而已。我已放下我们之间的孰是孰非,已然不再执着了,因果可以跳出。愿你未来无忧,内心徜徉。......
  • Django博客开发教程:使用ckeditor富文本编辑器添加数据
    前一篇没用,我测试了集成ueditor之后没法上传图片,ueditor百度早就停止维护了,于是我想到了改用ckeditor,结果一遍成功富文本即具备丰富样式格式的文本。可以是包含了HTML语法格式的字符串。为了快速简单的让用户能够在页面中编辑带html格式的文本,引入富文本编辑器。  一、安......
  • 博客园如何转载别人的文章
     转载于 https://www.cnblogs.com/gexbooks/p/11283582.html 最近学习PyQt5发现有好的文章介绍控件的,但是太多,想着转载后面慢慢看,查看了下,并无快捷转载按钮,查找度娘,找到一种方法一、首先我们要设置自己的博客园进入自己的博客园,点击安步骤点击:选项->Markdown->SAVE二......