本书基于Django 2.0,较为全面地介绍了Django 应用的开发过程、Django 核心模块的实现原理以及部署应用的相关技巧。全书共14 章,第1 章到第3 章对Django 框架以及开发环境配置、项目框架搭建进行了介绍;第4 章到第13 章使用Django 内置的核心模块完成了应用的开发,并对各个模块的实现原理进行了分析,包括ORM 实现原理、模板系统实现原理、路由系统实现原理、信号工作原理等;第14 章介绍了部署Django 应用的过程。同时,本书针对出现的疑难内容,配有视频讲解,以便读者更好地理解、应用Django 框架。
Python语言的热度越来越高。基于Python的Web开发框架也越来越多,其中Django以快速开发、代码结构清晰以及功能齐全等优点,成为最受青睐的Web开发框架。
1. 作者是百度开发工程师,实际开发经验丰富。
2. 书中案例来自于实际开发项目。
3. 配套教学视频。
大连理工大学毕业,先后在小米、春雨医生从事软件研发工作,目前在百度从事广告系统方面的研发工作,目前是百度高级研发工程师。 擅长Web站点开发,对Web框架有深入研究,大数据相关技术也有一定研究。
第 1 章 初识Django 框架....... 1
1.1 Django 的产生背景........................1
1.1.1 Django 的创建背景......................... 1
1.1.2 Django 的版本发布过程................. 2
1.2 MTV 设计模式...............................2
1.2.1 熟悉的MVC 设计模式................... 2
1.2.2 Django 的MTV 设计模式............. 3
1.3 Django 提供的主要功能模块...........3
1.3.1 Django 中的ORM .......................... 3
1.3.2 用户模块与权限系统...................... 4
1.3.3 Admin 后台管理系统..................... 4
1.3.4 视图.................................................. 5
1.3.5 模板系统.......................................... 5
1.3.6 优雅的表单系统Form ................... 5
1.3.7 信号机制.......................................... 6
1.3.8 路由系统.......................................... 7
1.3.9 中间件.............................................. 7
1.3.10 缓存系统........................................ 8
第 2 章 Django 开发环境配置 .....................9
2.1 Python 的安装与配置.....................9
2.1.1 安装Python .................................... 9
2.1.2 Python 包管理工具......................10
2.2 虚拟环境的安装与配置..................11
2.2.1 安装Virtualenv ............................ 11
2.2.2 创建应用运行的虚拟环境............ 11
2.3 Django 的安装与配置...................12
2.4 MySQL 的安装与配置..................12
2.4.1 安装MySQL ................................. 13
2.4.2 配置MySQL 环境变量................. 13
2.4.3 创建work 账号............................. 14
2.5 PyCharm 的安装与配置...............15
第 3 章 Django 项目框架搭建 ........................ 16
3.1 Django 管理工具创建项目骨架..... 16
3.1.1 django-admin 创建项目骨架...... 16
3.1.2 settings.py 文件配置项解析....... 17
3.2 修改项目的默认配置.................... 19
3.2.1 配置语言环境和时区.................... 19
3.2.2 配置开发数据库............................ 20
3.3 初始化项目环境............................20
3.3.1 INSTALLED_APPS 中应用的数据库迁移.............. 21
3.3.2 创建超级用户登录管理后台........ 22
3.3.3 给BBS 项目创建应用.................. 23
3.3.4 Python 项目中的requirements.txt文件 .................... 23
3.3.5 将项目装载到IDE 中................... 24
第 4 章 Django ORM 应用与原理剖析.............25
4.1 构建post 应用需要的数据表..........25
4.1.1 post 应用的Models 定义............. 25
4.1.2 post 应用完成数据库迁移........... 27
4.2 Model 相关的概念与使用方法........28
4.2.1 Model 的组成部分........................ 29
4.2.2 Meta 元数据类属性说明.............. 30
4.2.3 Field 的通用字段选项.................. 32
4.2.4 基础字段类型................................ 33
4.2.5 三种关系字段类型........................ 35
4.2.6 Model 的继承模型........................ 38
4.3 Model 的查询操作API ................ 40
4.3.1 创建Model 实例对象...................40
4.3.2 返回单实例的查询方法................ 41
4.3.3 返回QuerySet 的查询方法......... 43
4.3.4 返回RawQuerySet 的查询方法.................... 47
4.3.5 返回其他类型的查询方法............ 48
4.3.6 存在关联关系的查询.................... 49
4.3.7 F 和Q 查询.................................... 51
4.3.8 聚合查询和分组查询.................... 53
4.4 ORM 实现原理分析......................55
4.4.1 Python 元类.................................. 55
4.4.2 Python 描述符.............................. 57
4.4.3 继承models.Model....................... 59
4.4.4 实现Manager ............................... 62
4.4.5 一次完整的ORM 实现过程......... 63
第 5 章 Django 管理后台......67
5.1 将Model 注册到管理后台.............67
5.1.1 启用管理后台的准备工作............ 67
5.1.2 实现Model 的注册....................... 69
5.2 使用管理后台操作Model 对象实例........................70
5.2.1 管理后台中的基本操作................70
5.2.2 管理后台操作历史........................ 73
5.3 使用ModelAdmin 自定义管理后台.......................75
5.3.1 注册Model 到Admin 的两种方式........................ 75
5.3.2 ModelAdmin 的常用属性............. 76
5.4 管理后台实现原理分析..................88
5.4.1 Python 装饰器.............................. 88
5.4.2 contenttypes 应用分析................90
5.4.3 Model 的注册过程分析................ 93
5.4.4 管理后台入口实现分析................ 94
5.4.5 Django 加载应用admin 的过程分析................ 96
第 6 章 视图........................99
6.1 视图初探.................................... 99
6.1.1 定义第 一个视图............................ 99
6.1.2 视图的请求与响应对象.............. 101
6.1.3 基于类的视图.............................. 105
6.1.4 动态路由...................................... 106
6.1.5 给post 应用添加视图................ 109
6.2 视图的高级特性和快捷方法..........113
6.2.1 URL 的反向解析......................... 113
6.2.2 视图重定向.................................. 115
6.2.3 常用的快捷方法.......................... 116
6.3 基于类的通用视图......................118
6.3.1 用于渲染模板的TemplateView .................. 118
6.3.2 用于重定向的RedirectView..... 120
6.3.3 用于展示Model 列表的ListView ............... 122
6.3.4 用于展示Model 详情的DetailView................... 125
6.4 视图工作原理分析......................127
6.4.1 解决一键多值问题的QueryDict.................... 128
6.4.2 类视图基类View 源码分析....... 130
6.4.3 HttpRequest 的创建过程.......... 131
6.4.4 HttpResponse 的返回过程........ 133
第7 章 Django 模板系统.... 135
7.1 模板系统基础.............................135
7.1.1 初次使用模板系统...................... 135
7.1.2 模板后端的默认配置.................. 137
7.1.3 将模板应用到视图中.................. 139
7.1.4 RequestContext 和上下文处理器.................... 141
7.2 模板系统语法.............................143
7.2.1 模板变量与替换规则.................. 143
7.2.2 模板标签...................................... 146
7.2.3 过滤器.......................................... 152
7.2.4 模板继承...................................... 154
7.3 模板系统工作原理分析................156
7.3.1 模板文件实现加载的过程.......... 156
7.3.2 模板渲染机制实现分析..............160
第8 章 Django 表单系统.... 165
8.1 认识表单...................................165
8.1.1 一个简单的表单.......................... 165
8.1.2 完善表单处理存在的问题.......... 166
8.2 使用表单系统实现表单................168
8.2.1 使用Form 对象定义表单........... 168
8.2.2 常用的表单字段类型.................. 171
8.2.3 自定义表单字段类型.................. 174
8.2.4 自定义表单的验证规则.............. 176
8.2.5 基于Model 定制的表单............. 177
8.3 表单系统的工作原理...................181
8.3.1 表单对象的创建过程.................. 181
8.3.2 表单对象校验的实现过程.......... 182
8.3.3 表单对象生成HTML 的实现过程......................184
8.3.4 ModelForm 翻译Model 的实现过程...................... 186
第9 章 用户认证系统.......... 188
9.1 用户与身份验证..........................188
9.1.1 用户与用户组.............................. 188
9.1.2 用户身份认证.............................. 191
9.2 权限管理...................................193
9.2.1 定义权限的数据表...................... 193
9.2.2 给Model 添加自定义的权限.....194
9.2.3 权限的授予与校验...................... 195
9.2.4 权限获取与校验的实现过程...... 197
9.3 用户认证系统的应用...................199
9.3.1 自定义认证后端......................... 200
9.3.2 在模板中校验用户身份和权限...201
9.3.3 身份验证视图..............................202
9.3.4 使用装饰器限制对视图的访问.....................206
第 10 章 Django 路由系统....................209
10.1 路由系统基础...........................209
10.1.1 认识URLconf........................... 209
10.1.2 URL 模式定义相关的函数...... 210
10.1.3 路由参数传递............................ 212
10.1.4 自定义错误页面........................ 213
10.2 路由系统工作原理.....................215
10.2.1 偏函数....................................... 215
10.2.2 实现路由分发的include函数............ 216
10.2.3 path 函数的工作原理............... 217
10.2.4 HTTP 请求查找视图的实现过程...................... 221
第 11 章 Django 中间件.....223
11.1 中间件基础..............................223
11.1.1 中间件简介................................ 223
11.1.2 中间件的钩子函数.................... 224
11.1.3 自定义中间件............................ 226
11.2 Django 内置的中间件...............228
11.2.1 会话中间件SessionMiddleware ................. 229
11.2.2 身份认证中间件AuthenticationMiddleware .... 234
11.3 中间件的工作原理....................236
11.3.1 责任链设计模式........................ 236
11.3.2 中间件基类MiddlewareMixin .................... 237
11.3.3 中间件的装载与执行................ 238
第 12 章 Django 信号机制....................242
12.1 信号的概念与应用.....................242
12.1.1 信号的基本概念........................ 242
12.1.2 内置的信号................................ 243
12.1.3 自定义信号................................246
12.2 信号的工作原理........................247
12.2.1 观察者设计模式........................ 247
12.2.2 Python 中的弱引用..................248
12.2.3 Python 线程同步机制..............250
12.2.4 信号的工作过程........................ 252
第 13 章 单元测试.............. 257
13.1 初识单元测试...........................257
13.1.1 单元测试的基本概念................ 257
13.1.2 unittest 模块的使用方法......... 258
13.1.3 给Django 项目编写单元测试....................260
13.2 单元测试的相关特性.................262
13.2.1 unittest 测试框架的特性......... 263
13.2.2 Django 单元测试中数据库的配置..................... 265
13.2.3 Django 单元测试的常用测试工具....................... 266
13.2.4 统计测试代码的覆盖率............ 267
第 14 章 Django 项目的部署....................270
14.1 理解Python Web 应用.............270
14.1.1 认识WSGI 协议....................... 270
14.1.2 Python 内置的WSGI服务器.................... 271
14.1.3 Django 框架中WSGI 协议的实现....................... 274
14.2 生产环境的搭建与配置..............279
14.2.1 Gunicorn 的安装与配置........... 279
14.2.2 uWSGI 的安装与配置.............. 282
14.2.3 Nginx 的安装与配置................ 284