BBS项目(多人博客系统)

BBS项目(多人博客系统)

一、项目开发流程

# 软件开发流程
-项目立项(高层,市场人员:市场调研,客户对接)
-项目设计(产品经理:设计软件功能,设计原型图)
-项目的具体设计(UI:切图)
-分任务开发
	-前端:pc,小程序,移动端
    	-分任务开发
    -后端:
    	-架构,数据库设计---(设计表,表关联)
        -多人系统开发
-联调
-测试:功能测试,自动化测试,接口测试
-上线运行:运维

-出现bug,项目维护阶段
-版本迭代

二、BBS项目表设计及关联

1.需要开发的功能
-注册功能
-登录功能
-首页:文章展示,导航栏,用户中心,广告位
-个人主页:文章展示,侧边栏过滤(分类、标签、时间)
-文章详情:点赞点踩,评论(父评论、子评论)
-后台管理:个人文章展示(增加、删除、修改文章)
-发布文章:富文本编辑器,xss攻击处理

2.技术选型:
python3.8 
django2.2.22 
mysql5.7 
jQuery2.x
bootstrap@3

3.设计数据库---->>>数据库名 bbs1
-用户表(基于auth的user表扩写,扩写字段)
-博客表(跟用户表一对一)
-标签表:跟博客表一对多,跟文章多对多
-分类表:跟博客表一对多,跟文章一对多
-文章表:跟博客表一对多
-点赞点踩表:跟用户表一对多,跟文章表一对多
-评论表:跟用户表一对多,跟文章表一对多

三、项目表字段编写和表迁移

1.创建项目

# 第一步:安装django2.2.22
pip38 install django==2.2.22
# 第二步:使用pycharm创建项目
# 第三步:配置文件settings.py
-58行:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
-国际化:
# 第四步:国际化
LANGUAGE_CODE = 'zh-hans'  # 语言中文
TIME_ZONE = 'Asia/Shanghai'  # 时区使用上海时区
USE_I18N = True
USE_L10N = True
USE_TZ = False  # 不使用TZ时间
# 第五步:使用mysql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'NAME': 'bbs1',
        'USER': 'root',
        'PASSWORD': '313',
    }
}
# 第五步:创建BBS数据库
create database bbs1;

2.在models中,写表模型

from django.db import models
from django.contrib.auth.models import AbstractUser
'''
需要在配置文件settings.py写上:
	AUTH_USER_MODEL = 'blog.UserInfo'
'''

# Create your models here.
# 继承AbstractUser,扩写字段:头像字段,手机号字段,一对一的博客字段
class UserInfo(AbstractUser):
    # username,password,email...
    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)  # 一对一关联了blog表


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=255, verbose_name='文章摘要')
    content = models.TextField(verbose_name='文章内容')  # 大文本
    # auto_now_add auto_now
    # auto_now_add=True 新增文章这个字段可以不传,自动把当前时间加上
    create_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='Comment', on_delete=models.CASCADE)
    # 方式二:自关联
    # parent = models.IntegerField(null=True)
    parent = models.ForeignKey(to='self', on_delete=models.CASCADE, null=True)
安装pymysql
pip38 install pymysql

# 在__init__.py中加入:django默认操作mysql数据库使用的是mysqlDB模块,在python2中没有问题,但是在python3中操作mysql咱们用pymysql比较多,需要加下面两句话才能正常使用---->>>猴子补丁(动态替换--把源码使用mysqlDB替换成pymysql的东西)
项目或者应用目录下的__init__.py中编写一行代码:
import pymysql
pysql.install_as_MySQLdb()

# 以后直接使用mysqlclient:有可能装不上,系统配置文件少了点啥
pip38 install mysqlclient
posted @   努力努力再努力~W  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示