前言
 
环境说明: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
 
 
 
 
 
 
 

mxonline实战-1,创建应用及相应模型的更多相关文章

  1. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  2. 应用HTK搭建语音拨号系统2:创建单音素HMM模型

    选自:http://maotong.blog.hexun.com/6204849_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...

  3. 【Unity】3.0 第3章 创建和导入3D模型

    分类:Unity.C#.VS2015 创建日期:2016-04-02 一.简介 利用Unity内置的基本模型和工具,不需要借助任何其他的三维建模软件,就可以直接创建出各种3D模型,这是这一章我们首先学 ...

  4. 第八天 1-7 实战:创建一个root无法删除的文件

    实战:创建一个root无法删除的文件 简介:Linux文件的最底层(内核级别)属性的查看与修改 命令:lsattr.chattr Linux文件除了具有基本权限rwx,及特殊权限(SUID.SGID. ...

  5. scrapy电影天堂实战(二)创建爬虫项目

    公众号原文 创建数据库 我在上一篇笔记中已经创建了数据库,具体查看<scrapy电影天堂实战(一)创建数据库>,这篇笔记创建scrapy实例,先熟悉下要用到到xpath知识 用到的xpat ...

  6. Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

    1.简介 上一篇中宏哥已经将其的理论知识介绍了一下,这一篇宏哥就带着大家一步一步的把上一篇介绍的理论知识实践一下,然后再说一下如何创建高级web测试计划. 2.网络计划实战 通过上一篇的学习,宏哥将其 ...

  7. Flask实战第38天:前台模型创建

    安装shortuuid pip install shortuuid 编辑front.models.py from exts import db import shortuuid from werkze ...

  8. java并发编程实战《二》java内存模型

    Java解决可见性和有序性问题:Java内存模型 什么是 Java 内存模型? Java 内存模型是个很复杂的规范,可以从不同的视角来解读,站在我们这些程序员的视角,本质上可以理解为, Java 内存 ...

  9. 创建简单的机器人模型smartcar

    前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人 smartcar,为后面建立复杂机器人打下基础. 一.创建硬件描述包. cd ~/catkin_ws/srcroscr ...

随机推荐

  1. python之private variables

    [python之private variables] “Private” instance variables that cannot be accessed except from inside a ...

  2. 27.Remove Element(Array)

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  3. advance shading--光源的类型

    我们这里讨论的光源类型都有一个相同点,就是,我们考量的都是光源上的一个点,对于物体表面上一个点的影响,也就是说立体角趋近为零的情况. 这里光源分为两类,一类是方向光,假设光源在无限远处.另一类是点光源 ...

  4. vs与qt

    http://blog.csdn.net/woniuye/article/details/54928477 1. #include "qmessagebox.h" QMessage ...

  5. 安卓开发解决android.os.NetworkOnMainThreadException异常方法(主线程不能直接调用webservice)

    安卓开发解决android.os.NetworkOnMainThreadException异常方法 2013-01-07 14:01:04|  分类: 技术 |  标签:安卓  技术  java  | ...

  6. 不要怂,就是GAN (生成式对抗网络) (二):数据读取和操作

    前面我们了解了 GAN 的原理,下面我们就来用 TensorFlow 搭建 GAN(严格说来是 DCGAN,如无特别说明,本系列文章所说的 GAN 均指 DCGAN),如前面所说,GAN 分为有约束条 ...

  7. nohup、&、setsid、fork和fg、bg究竟有啥区别?

    目录 目录 1 1. 名词解释 1 2. 什么是守护进程? 2 2.1. 后台运行 2 2.2. 解释关系 2 3. 以"&"方式运行有何问题? 2 4. fork 2 5 ...

  8. POJ 3685 Matrix (二分套二分)

    Matrix Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 8674   Accepted: 2634 Descriptio ...

  9. 利用SQL表生成按日期序列的唯一ID

    1. 创建一个表,用于存现在最大的ID SELECT [ID],[PreFix],[Code] FROM [DocumentNO] 2. 增加SP,利用锁表,生成相应的ID Create PROCED ...

  10. Postgresql 用户管理

    一, 设置超级用户密码 1  修改 pg_hba.conf 使超级用户postgres 可以登录到数据库中 host all all 127.0.0.1/32 trust 2 修改 postgres ...