前言
 
环境说明: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. HDFS Architecture Notes

    [HDFS Architecture Notes] 1.Moving Computation is Cheaper than Moving Data A computation requested b ...

  2. 18.4Sum (Map)

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  3. python大规模数据处理技巧之一:数据常用操作

    面对读取上G的数据,python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响.如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大.虽然时间看起来都微不 ...

  4. PhpStorm (强大的PHP开发环境)2017.3.2 附注册方法

    最新版PhpStorm 2017正式版改进了PHP 7支持,改进代码完成功能. PhpStorm 是最好的PHP开发工具,使用它进行PHP开发将会让你感觉到编程的乐趣. 快乐无极终于从oschina看 ...

  5. Java 设计模式系列(十七)中介者模式

    Java 设计模式系列(十七)中介者模式 用一个中介对象来封装一系列的对象交互.中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互 一.中介者模式结构 Media ...

  6. 给力分享新的ORM => Dapper( 转)

    出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html 最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的. ...

  7. Ubuntu下的apache2的配置过程

    参考apache2的中文文档:http://httpd.apache.org/docs/2.4/ 安装apache2: apt-get install apache2 安装apache2doc文档:a ...

  8. weevely入手使用笔记

    -前言 weevely是一款使用python编写的webshell工具,集webshell生成和连接于一身,采用c/s模式构建,可以算作是linux下的一款php菜刀替代工具,具有很好的隐蔽性(生成随 ...

  9. 9.使用GetData,Children实现对ZNode的监控

    一. zookeeper中的watcher 1. exists :监控的是[znode]的CUD 的操作   2. getdata 的时候注册的watcher[U,D 监控]update delete ...

  10. Android-DateTimeAndroidUtil-工具类

    DateTimeAndroidUtil-工具类 是关于时间日前相关的公用方法: package liudeli.mynetwork01.utils; import android.util.Log; ...