bbs项目01

1 项目开发流程

BBS:多人博客系统
-django
-mysql

传统软件行业:给第三方做解决方案
互联网行业:饿了么,叮咚买菜。。。

软件开发流程

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

2 bbs项目表设计及关联

要开发的功能

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

技术选型:

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

设计数据库—》数据库名字 bbs

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

表的关联关系

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

img

3 项目表字段编写和表迁移

3.1 创建项目

第一步:安装djagno 2.2.2

pip3 install django==2.2.2

第二步:使用pycharm创建项目
第三步:配置文件
-58行:
	'DIRS': [os.path.join(BASE_DIR , 'templates')]
-国际化
    LANGUAGE_CODE = 'zh-hans'   # 语言中文
    TIME_ZONE = 'Asia/Shanghai' # 时区使用上海时区
    USE_I18N = True
    USE_L10N = True
    USE_TZ = FalseDATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'bbs',
    'HOST':'127.0.0.1',
    'PORT':3306,
    'USER':'root',
    'PASSWORD':'659236',
    'CHARSET' :  'utf8'
}
}

-使用mysql
-创建bbs数据库

3.2 在models中,写表模型

扩写auth的user表
AUTH_USER_MODEL = ‘blog.UserInfo’
级联删除
on_delete=models.CASCADE

from django.db import models
from  django.contrib.auth.models import AbstractUser
用户表(一对一关联blog表)
class UserInfo(AbstractUser):
    # 继承中有username,password,email。。。。
    phone = models.CharField(max_length=32, null=True)
    # 存文件的字段---》本质还是varchar,可以把文件自动保存(avatar文件夹下),存文件地址upload_to='avatar'(上传文件)
    avatar = models.FileField(upload_to='avatar', default='avatar/default.png')
    blog = models.OneToOneField(to='Blog', on_delete=models.CASCADE, null=True)
博客表
class Blog(models.Model):
    title = models.CharField(max_length=32, verbose_name='主标题')
    site_name = models.CharField(max_length=32, verbose_name='副标题')
    site_style = models.CharField(max_length=32, verbose_name='个人站点样式')
标签层(一对多blog表)
class Tag(models.Model):
    name = models.CharField(max_length=32, verbose_name='标签名字')
    # on_delete可以有很多选项,目前先用级联删除
    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)
分类层(一对多blog表)
class Category(models.Model):
    name = models.CharField(max_length=32, verbose_name='分类名字')
    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)
文章层(一对多blog表, 一对多category表,多对多tag表)
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=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_fileds通过哪两个字段关联
    tag = models.ManyToManyField(to='Tag')
点赞点踩表(一对多article表)
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="点赞或者点踩")
评论层(一对多article表,自关联评论表)
class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo', on_delete=models.CASCADE)
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE)
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='评论时间')
    content = models.CharField(max_length=64, verbose_name='评论内容')
    parent = models.ForeignKey(to='self', on_delete=models.CASCADE, null=True)
    # parent=models.ForeignKey(to='Comment', on_delete=models.CASCADE)
    # parent=models.IntegerField(null=True)
# 自关联字段---》父评论--》子评论
'''
id  user   article   content          parent
1    2      1        写的真好           空   
2    2      2        写的一般           空
3    3      2        人家明明写的很好    9


'''

安装pymysql

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

以后直接使用 mysqlclient:有可能装不上—》看人品
pip3 install mysqlclient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值