第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