学习python-Day60
2022/9/15 1:17:30
本文主要是介绍学习python-Day60,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今日学习内容
一、项目开发流程
BBS:多人博客系统 需要用到 django,mysql
传统软件行业:给第三方做解决方案
互联网行业:饿了么,叮咚买菜...
软件开发流程:
-
项目立项(高层,市场人员(市场调研),跟客户对接)
-
项目设计(产品经理:设计软件功能,设计原型图)
-
项目的具体设计(UI:切图)
-
分任务开发
前端:pc,小程序,移动端(分任务开发)
后端:架构,数据库设计(设计表,表关联)
多人系统开发
-
联调,就是前后端整合一下。
-
测试:功能测试,自动化测试,接口测试
-
上线运行:运维
-
出现bug,项目维护阶段
-
版本迭代
二、bbs项目表设计及关联
1.bbs开发的功能
- 注册功能
- 登录功能
- 首页:文章展示,导航栏,用户中心,广告位
- 个人主页:文章展示,侧边栏过滤(分类,标签,时间)
- 文章详情:点赞点踩,评论(父评论,子评论)
- 后台管理:个人文章展示(增加,删除,修改文章)
- 发布文章:富文本编译器,xss攻击处理
针对技术选择的版本:python3.8 django2.2.2 mysql5.7 jquery2.x bootsrap@3
2.设计数据库
数据库名字 bbs
- 用户表(基于auth的user表扩写,扩写字段)
- 博客表(跟用户表一对一)
- 标签表
- 分类表
- 文章表
- 点赞点踩表
- 评论表
3.表的关联表
- 用户表(基于auth的user表的扩写,扩写字段)
- 博客表------------------用户表(一对一)
- 标签表------------------博客表(一对多),文章表(多对多)
- 分类表------------------博客表(一对多),文章表(一对多)
- 文章表------------------博客表(一对多),
- 点赞点踩表------------用户表(一对多),文章表(一对多)
- 评论表-------------------用户表(一对多),文章表(一对多)
三、项目表字段编写和表迁移
1.创建项目
第一步:安装django 2.2.2
pip3 install django == 2.2.2
第二步:使用pycharm创建项目
第三步:配置文件(settings.py)
将 TEMPLATES = [...'DIRS': [BASE_DIR / 'templates'],...] 中 DIRS 修改。 '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 创建bbs数据库
2.在models中写表模型
from django.db import models from django.contrib.auth.models import AbstractUser # 继承AbstractUser,扩写字段:头像字段,手机号字段,一对一的博客字段。 class UserInfo(AbstractUser): phone = models.CharField(max_length=32, null=True) avatar = models.FileField(upload_to='avatar', default='avatar/default.png') blog = models.OneToOneField(to='Blog', on_delete=models.CASCADE, null=True) ''' FileField:存文件的字段>>>本质还是varchar, 可以把文件自动保存(avatar文件夹下),存文件地址 OneToOneField:一对一关联表 upload_to:上传自动保存到xxx文件,传入空则取默认值为avatar或者是命名为default.png图片 verbose_name:供后台管理使用,表示注释。 ''' 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 Article(models.Model): title = models.CharField(max_length=32, verbose_name='文章名字') desc = models.CharField(max_length=255, verbose_name='文章摘要') content = models.TextField(verbose_name='文章内容') 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) tag = models.ManyToManyField(to='Tag') ''' TextField:大文本 auto_now_add=True 新增文章字段可以不传,自动更新为当前时间。 多对多关系,需要创建第三张表。 django的orm的ManytoManyField字段可以自动创建第三张表(ArticleToTag) 手动创建第三张表:ManyToManyField一定要加两个参数,through = 中间表, through_field 通过哪两个字段关联。 ''' 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='评论的内容') # 外联方式 # 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) ''' 自关联字段>>>父评论>>>子评论 id user article content parent 1 2 1 写的好 空 2 2 2 写不好 空 3 3 2 好的! 空 ''' class Category(models.Model): name = models.CharField(max_length=32, verbose_name='分类的名字') blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE)
注意:继承AbstractUser
需要写一行代码在settings.py
文件中
AUTH_USER_MODEL = '应用名.类名'
安装pymysql
数据库迁移会出现问题:
针对这种问题的解决措施是:
1.安装pymysql pip3 install pymysql
还会出现这种问题:
2. django默认操作mysql数据库使用的是 mysqlDB模块,在python2中没有问题, 但是在python3中已经不维护了,不支持python3中操作mysql。所以python3用pymysql比较多,但是需要加入下面两句话才嗯呢该正常使用。 ''' 猴子补丁:动态替换---把源码使用mysqlDB替换成pymsql的东西。 ''' 注意:django2.0.7及以后版本,需要该源码才能使用:operation.py 146行:改成query = query.encode(errors='replace') 在 __init__.py 或者 settings.py 文件加入 import pymysql pymysql.install_as_MySQLdb()
最简单方式就是直接使用 mysqlclient:有可能装不上 pip3 install mysqlclient
这篇关于学习python-Day60的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享