Django2 中文学习指南
by [fz420@qq.com]
Django介绍
诞生2003~,Simon和Andrian开发,以快速开发目的实现Django。
Django版本和Python版本选择:
| Django Version | Python Version |
|---|---|
| 1.8 | 2.7,3.2, 3.3,3.4,3.5 |
| 1.9,1.10 | 2.7,3.4,3.5 |
| 1.11 | 2.7,3.4,3.5, |
| 2.0 | 3.4,3.5,3.6 |
| 2.1 | 3.5,3.6,3.7 |
本文档代码基于
django2.0.x + python3.6
Django和MVC
django是一个遵循MVC设计模式的框架,MVC是model/view/controller的三个单词的简写。分别代表模型、视图、控制器。

第01章 入门
搭建环境
最佳实践:https://pythonguidecn.readthedocs.io/zh/latest/writing/structure.html#django-applications
使用以下命令创建项目时
$ django-admin.py startproject samplesite# 这样的操作生成的仓库结构是这样的:README.rstsamplesite/manage.pysamplesite/samplesite/settings.pysamplesite/samplesite/wsgi.pysamplesite/samplesite/sampleapp/models.py
亲,不要这样做。
相对路径会让您的工具和您的开发者都很疑惑。没有必要的嵌套对任何人都没有好处(除非您怀念庞大的SVN仓库)。
让我们这样来做:
# 1. 进入 git 仓库# 2. 新建项目$ cd git_repo/$ django-admin.py startproject samplesite .# 注意末尾的 "."。生成的结构是这样的:README.rstmanage.pysamplesite/settings.pysamplesite/wsgi.pysamplesite/sampleapp/models.py
设计模型
初始化项目
# 初始化项目# 一个事例#├── Hello <=APP資料夾#│ ├── admin.py#│ ├── apps.py#│ ├── __init__.py#│ ├── migrations#│ │ └── __init__.py#│ ├── models.py#│ ├── tests.py#│ └── views.py#├── manage.py # Django项目管理#└── mysite <=Project設定檔資料夾# ├── __init__.py# ├── settings.py # 全局设置文件# ├── urls.py # 全局路由控制# └── wsgi.py # 服务器使用wsgi部署的文件$ django-admin startproject webapp# 创建应用dj_test\webapp>python manage.py startapp booktest# 定义模型# yourapp/models.pyfrom django.db import modelsclass BookInfo(models.Model):btitle = models.CharField(max_length=20)bpub_data = models.DateTimeField()class HeroInfo(models.Model):hname = models.CharField(max_length=20)hgender = models.BooleanField()hcontent = models.CharField(max_length=1000)hbook = models.ForeignKey(BookInfo)# 注册应用# project/settings.pyINSTALLED_APPS = [...'booktest' # 注册应用]# 初始化迁移文件dj_test\webapp>python manage.py makemigrations
管理站点
dj_test\webapp>python manage.py createsuperuser(venv) D:\note\mycodes\python\dj_test\webapp>python manage.py createsuperuserUsername (leave blank to use 'lite'): adminEmail address: admin@qq.comPassword:Password (again):Superuser created successfully.(venv) D:\note\mycodes\python\dj_test\webapp>
自定义管理页面
django settings
Django的settings文件包含Django项目的所有配置项且均大写。配置文件只是一个使用模块级变量的一个Python模块。
因为配置文件是Python模块,所以要注意以下几项:
- 不能有Python语法错误
- 可以用Python语法实现动态配置,例如:
MY_SETTING = [str(i) for i in range(30)] - 可以从其他配置文件中引入变量
查看你已经更改了哪个配置
python manage.pydiffsettings
在python代码中使用settings
在具体的Django应用中, 通过引入 django.conf.settings 使用配置, 例:
from django.conf import settingsif settings.DEBUG:# Do something
注意 django.conf.settings 并不是一个模块!— 而是一个对象!所以引入某个单独的设置项是不可能的:
from django.conf.settings import DEBUG # This won't work.
运行时更改设置
不建议在运行时更改设置. 比如, 不要在view中这样用:
from django.conf import settingssettings.DEBUG = True # Don't do this!
自定义配置
没有什么能够阻止您为自己的Django应用程序创建自己的设置。请遵循以下准则:
- 设置名称必须全部大写。
- 不要重新设置已存在的配置项。
对于序列设置,Django本身使用列表,但这只是一个约定
