ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BBS项目开发

2022-09-14 20:03:18  阅读:302  来源: 互联网

标签:True 项目 创建 数据库 pymysql 开发 auto now 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

标签:True,项目,创建,数据库,pymysql,开发,auto,now,BBS
来源: https://www.cnblogs.com/zxr1002/p/16694316.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有