mxonline实战-1,创建应用及相应模型
前言
环境说明:python3.5 + django2.0, 用的pycharm4.04专业版
课程视频地址
Navicat for MySQL 安装软件和破解补丁:
pycharm注册服务器
django在windows上运行出错时的资源网站
第一天 创建users应用并编写相应models.py
对应github地址:第一天小试牛刀
1. 创建项目mxonline并安装mysql驱动
pip install mysqlclient,不行的话去https://www.lfd.uci.edu/~gohlke/pythonlibs/下相应版本
2. mxonline的settings.py中配置数据库,然后通过navicat新建对应的数据库名
3. 创建users应用, 编写users/models.py
如果第一次执行python manage.py migrate可自动生成一些项目基本数据表,其中包括auth_user表,它包括了一些基本属性,我们可以继承这个表的基础上添加一些其他属性。定义users/models.py如下
注意:
1)最好在设计好users/models.py之后再进行数据库初始化,以避免一些不必要的错误
2)ImageField字段底层是Charfield,所以一定要写max_length
3)UserProfile继承了AbstractUser,就是auth_user表中的内容,注意还有一个AbstractBaseUser,别写错
4)最后一行的username就是AbstractUser中的属性
4. 在settings.py中INSTALLED_APPS里注册users,并在下面一行重载AUTH_USER_MODEL
5. 给users/models添加额外的表
5. 1 添加验证邮箱类,目的是用来注册账户和找回密码
注意
在send_time中用到了datetime.now,所以要from datetime import datetime
5.2 添加轮播图类,用来控制图片的属性和功能
6. 迁移数据库
python manage.py makemigrations users
python manage.py migrate
有时候在models.py写好前执行python manage.py migrate会出现下面错误
解决方法是删除除了auth_user外的其他表,重新执行上面命令
7. 创建后台账户(也可以不创建,因为后面要用xadmin来写后台)
7.1 创建超级用户并注册应用
python manage.py createsuperuser
在user/admin.py修改为如下
登陆http://127.0.0.1/admin即可进入后台
如果打开网页出现错误,删除整个数据库,重新生成一下
7.2 修改后台管理页面语言为中文
在settings.py修改为如下
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False #表示用本地时间,而不是UTC国际时间
第2天 创建剩余应用并编写相应模型
对应github地址:第二天重复的工作
重点:
1. 在django2.0,必须指明外键删除时的操作,比如机构倒闭了,机构里的员工怎么处理必须自己指明,比如可以删除。Django提供了如下操作
1) CASCADE
2) PROTECT
3) SET_NULL
4) SET_DEFAULT
一般进行级联删除就好,也就是添加参数on_delete=models.CASCADE
2. 多对多关系的处理
users和courses模型存在循环引用的关系,比如:
users中学生学习的课程要引用courses模型中的coursename
courses中的课程评论要引用users模型中的用户名
这样容易造成死循环影响性能,为了解决这个问题,可以再定义一个operation模型,来引用他们。其实就是users和courses是多对多的关系,需要另外一张表operation来处理
一. 新建一个应用course, 然后编写cousre/models.py
经分析,课程结构如下
1. 课程基本信息表
2. 章节表,和课程是1对多关系
3. 视频表,每一个章节对应多个视频
4. 课程资源表,比如课件,安装包等
二. 新建一个应用organization,编写organization/models.py
经分析,组织结构如下
1. 城市信息
2. 课程机构基本信息
3. 教师基本信息
三. 新建一个应用:operation,这个要重点学习
1. 用户咨询
2. 用户评论
3. 用户收藏
4. 用户消息
5. 用户学习的课程
四. 注册应用以及整理
1. 在settings.py的INSTALLED_APPS中注册这几个应用
2. 新建python package类型的文件夹apps,然后把users, courses, operation, organization这几个应用放进入,把apps右键mark成source root
3. 在settings.py中import sys, 然后加入sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
4. 迁移数据库,执行 python manage.py makemigrations, python manage.py migrate
努力生活,融于自然