BBS项目开发

项目开发流程

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

bbs项目表设计及关联

要开发的功能

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

技术选型

python3.8、django2.2.2、mysql:5.7、jquery2.X、bootstrap@3

设计数据库

用户表(基于auth的user表扩写,扩写字段)
博客表(跟用户表一对一)
标签表
分类表
文章表
点赞点踩表
评论表

各表之间的联系

image

创建项目

更改配置

"""配置文件"""
templates配置更改:'DIRS': [os.path.join(BASE_DIR , 'templates')]
国际化:
    LANGUAGE_CODE = 'zh-hans'   # 语言中文
    TIME_ZONE = 'Asia/Shanghai' # 时区使用上海时区
    USE_I18N = True
    USE_L10N = True
    USE_TZ = False
mysql配置:首先在数据库中创建一个数据库,可以在Navicat,也可以在终端敲命令进行创建
    (命令形式:create database bbs;),创建好以后配置settings里的配置
     DATABASES = {
		'default': {
			'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
			'NAME': 'bbs',  # 指定数据库名
			'USER': 'root',  # 用户名
			'PASSWORD': '123456',  # 密码
			'HOST': '127.0.0.1',
			'PORT': 3306,  # 端口
			'CHARSET': 'utf8'  # 编码
		}
}

创建表,思考表与表之间的关系

如果继承AbstractUser,扩展字段时,需要以下操作:
    首先需要导入模块:from django.contrib.auth.models import AbstractUser
    在settings.py文件中配置:AUTH_USER_MODEL = 'blog.UserInfo'

FileField(upload_to='avatar', default='avatar/default.png')
    保存文件的字段,upload_to参数的设置是指:可以把文件自动保存(avatar文件夹下),default参数指:存文件地址


verbose_name='XXX',提示这个字段是用来表示什么的

auto_now_add、auto_now
    创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。
    auto_now = True   # 这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。因此这个参数在需要存储“最后修改时间”的场景下,十分方便。需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin中是只读的
    auto_now_add = True  # 这个参数的默认值也为False,设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。

多对多关系
    多对多关系,会创建第三张表,建立好表与表之间的关系自动创建的(ManyToManyField字段可以自动创建第三张表)
    如果是手动创建第三张表:ManyToManyField一定要加俩个参数,through=中间表,through_filed通过哪俩个字段关联

安装pymysql

pip3 install pymysql
    在__ini__.py中加入:djagno默认操作mysql数据库使用的是 mysqlDB模块,在python2中没问题,但是在python3中已经不维护了,不支持,python3中操作mysql咱么用pymysql比较多,但是需要加下面两句话才能正常使用-----》猴子补丁(动态替换--把源码使用mysqlDB替换成pymysql的东西)
    import pymysql
    pymysql.install_as_MySQLdb()
    但是在django2.0.7及以后版本,需要改源码才能使用:operations.py---》146行,改成query = query.encode(errors='replace')

也可以直接使用:mysqlclient:有可能装不上
    pip3 install mysqlclient
posted @ 2022-09-14 19:45  张张包~  阅读(35)  评论(0编辑  收藏  举报