前言
 
环境说明: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. Hadoop之MapReduce学习笔记(一)

    主要内容:mapreduce整体工作机制介绍:wordcont的编写(map逻辑 和 reduce逻辑)与提交集群运行:调度平台yarn的快速理解以及yarn集群的安装与启动. 1.mapreduce ...

  2. Common Lisp

    [Common Lisp] 1.操作符是什么? 2.quote. 3.单引号是quote的缩写. 4.car与cdr方法. 5.古怪的if语句. 6.and语句. 7.判断是真假. null 与 no ...

  3. 05-了解activiti目录结构

    数据库底层支持的23张表的增删改查 如果你不会用activiti的API,可以看一下开发文档 流程引擎ProcessEngines,最重要是这个玩意. libs就更重要了,我们使用一个框架主要是使用它 ...

  4. python全栈考试

    1.执行 Python 脚本的两种方式 shell直接调用python脚本 python run.py 调用解释器来调用脚本  2.2.简述位.字节的关系 每8个位bit,组成一个字节byte. 一个 ...

  5. 《剑指offer》读书笔记

    二叉树 重建二叉树 面试题6:(p55) 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1, 2, 4 ...

  6. How to setup Laravel Homestead in Windows

    How to setup Laravel Homestead in Windows by JBorbón  17. March 2017   PHP   8 Developing with PHP u ...

  7. POP邮件收取邮件 代码

    // 111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <WinSock.h> #include ...

  8. DataStage 二、InfoSphere Information Server进程的启动和停止

    DataStage序列文章 DataStage 一.安装 1 关于进程需要了解的基础知识 名称 说明 ASB代理进程 通信代理程序,它的作用是协助层与层之间的通信,默认端口是31531,它以后台进程的 ...

  9. Java设计模式(6)——建造者模式

    定义:Builder模式也叫建造者模式或者生成器模式,Builder模式是一种对象创建型模式之一,用来隐藏复合对象(对象的属性为另一个对象的引用)的创建过程,它把复合对象的创建过程交给Builder, ...

  10. 20155209 2016-2017-2 《Java程序设计》第七周学习总结

    20155209 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 认识时间与日期 时间的度量 GMT(Greenwich Mean Time) 时间:现在不是 ...