项目开发流程
项目立项(高层,市场人员:市场调研,与客户对接)
项目设计(产品经理:设计软件功能,设计原型)
项目的具体设计(UI:切图)
分任务开发
前端:pc,小程序,移动端
分任务开发
后端:架构,数据库设计(设计表,表关联)
多人系统开发
联调
测试
功能测试,自动化测试,接口测试、、、
上线运行:运维
维护阶段:项目维护阶段
版本迭代
bbs项目表设计及关联
要开发的功能
注册功能
登录功能
首页:文章展示、导航栏、用户中心、广告位
个人主页:文章展示、侧边栏过滤(分类、标签、时间)
文章详情:点赞点踩、评论(父级、子级)
后台管理:个人文章展示(增加、删除、修改文章)
发布文章:富文本编辑器,xss攻击
技术选型
python3.8、django2.2.2、mysql:5.7、jquery2.X、bootstrap@3
设计数据库
用户表(基于auth的user表扩写,扩写字段)
博客表(跟用户表一对一)
标签表
分类表
文章表
点赞点踩表
评论表
各表之间的联系
创建项目
更改配置
"""配置文件"""
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