书籍详情
Django Web开发实例精解
作者:[美]爱达斯·班德拉蒂斯 等著,张华臻 译
出版社:清华大学出版社
出版时间:2023-04-01
ISBN:9787302631316
定价:¥159.00
购买这本书可以去
内容简介
《Django Web开发实例精解》详细阐述了与Django相关的基本解决方案,主要包括模型和数据库结构、表单和视图、模板和JavaScript、自定义模板过滤器和标签、模型管理、安全和性能、层次结构、导入和导出数据、测试、部署、维护等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
作者简介
爱达斯·班德拉蒂斯在过去的18年里一直从事专业的网站建设。在过去的14年里,他一直在柏林一家名为studio 38 pure communication的设计公司工作。他和一个小的专门团队一起,主要使用Django作为后端,jQuery作为前端来创建文化和旅游web平台。
目录
第1章 Django 3.0开始之旅 1
1.1 简介 1
1.2 技术需求 2
1.3 与虚拟环境协同工作 2
1.3.1 准备工作 2
1.3.2 实现方式 3
1.3.3 工作方式 3
1.3.4 延伸阅读 3
1.4 创建一个项目文件结构 4
1.4.1 准备工作 4
1.4.2 实现方式 4
1.4.3 工作方式 6
1.4.4 更多内容 7
1.4.5 延伸阅读 7
1.5 利用pip处理项目依赖项 8
1.5.1 准备工作 8
1.5.2 实现方式 8
1.5.3 工作方式 9
1.5.4 更多内容 10
1.5.5 延伸阅读 10
1.6 针对开发、测试、预发布和产品环境,配置设置项 10
1.6.1 准备工作 10
1.6.2 实现方式 11
1.6.3 工作方式 12
1.6.4 延伸阅读 12
1.7 在设置项中定义相对路径 12
1.7.1 准备工作 13
1.7.2 实现方式 13
1.7.3 工作方式 13
1.7.4 延伸阅读 14
1.8 处理敏感设置项 14
1.8.1 准备工作 14
1.8.2 实现方式 14
1.8.3 工作方式 15
1.8.4 更多内容 15
1.8.5 延伸阅读 16
1.9 在项目中包含外部依赖项 16
1.9.1 准备工作 17
1.9.2 实现方式 17
1.9.3 工作方式 18
1.9.4 延伸阅读 18
1.10 以动态方式设置STATIC_URL 19
1.10.1 准备工作 19
1.10.2 实现方式 19
1.10.3 工作方式 20
1.10.4 更多内容 20
1.10.5 延伸阅读 22
1.11 将UTF-8设置为MySQL配置的默认编码机制 22
1.11.1 准备工作 22
1.11.2 实现方式 22
1.11.3 工作方式 23
1.11.4 更多内容 23
1.11.5 延伸阅读 23
1.12 创建Git忽略文件 23
1.12.1 准备工作 23
1.12.2 实现方式 23
1.12.3 工作方式 25
1.12.4 延伸阅读 25
1.13 删除Python编译文件 25
1.13.1 准备工作 25
1.13.2 实现方式 26
1.13.3 工作方式 26
1.13.4 更多内容 26
1.13.5 延伸阅读 26
1.14 遵循Python文件中的导入顺序 26
1.14.1 准备工作 26
1.14.2 实现方式 27
1.14.3 工作方式 27
1.14.4 更多内容 27
1.14.5 延伸阅读 28
1.15 创建应用程序配置 28
1.15.1 准备工作 28
1.15.2 实现方式 28
1.15.3 工作方式 29
1.15.4 更多内容 30
1.15.5 延伸阅读 30
1.16 定义可覆写的应用程序设置项 30
1.16.1 准备工作 31
1.16.2 实现方式 31
1.16.3 工作方式 33
1.16.4 延伸阅读 33
1.17 针对Django、Gunicorn、Nginx和PostgreSQL,与Docker容器协同工作 33
1.17.1 准备工作 34
1.17.2 实现方式 34
1.17.3 工作方式 38
1.17.4 更多内容 41
1.17.5 延伸阅读 41
第2章 模型和数据库结构 43
2.1 简介 43
2.2 技术需求 43
2.3 使用模型混入 44
2.3.1 准备工作 44
2.3.2 实现方式 44
2.3.3 工作方式 45
2.3.4 更多内容 45
2.3.5 延伸阅读 46
2.4 利用与URL相关的方法创建一个模型混入 46
2.4.1 准备工作 47
2.4.2 实现方式 47
2.4.3 工作方式 48
2.4.4 延伸阅读 49
2.5 创建一个模型混入以处理日期的创建和修改 50
2.5.1 准备工作 50
2.5.2 实现方式 50
2.5.3 工作方式 51
2.5.4 延伸阅读 51
2.6 创建一个模型混入以关注元标签 51
2.6.1 准备工作 52
2.6.2 实现方式 52
2.6.3 工作方式 54
2.6.4 延伸阅读 54
2.7 创建一个模型混入以处理Generic Relation 54
2.7.1 准备工作 55
2.7.2 实现方式 55
2.7.3 工作方式 58
2.7.4 延伸阅读 59
2.8 处理多语言字段 59
2.8.1 准备工作 59
2.8.2 实现方式 60
2.8.3 工作方式 64
2.8.4 延伸阅读 65
2.9 与模型翻译表协同工作 65
2.9.1 准备工作 66
2.9.2 实现方式 66
2.9.3 工作方式 69
2.9.4 延伸阅读 70
2.10 避免环状依赖项 71
2.10.1 准备工作 71
2.10.2 实现方式 71
2.10.3 延伸阅读 73
2.11 添加数据库约束 73
2.11.1 准备工作 73
2.11.2 实现方式 73
2.11.3 工作方式 74
2.11.4 更多内容 75
2.11.5 延伸阅读 76
2.12 使用迁移 76
2.12.1 准备工作 77
2.12.2 实现方式 77
2.12.3 工作方式 78
2.12.4 更多内容 78
2.12.5 延伸阅读 79
2.13 将外键修改为多对多字段 79
2.13.1 准备工作 79
2.13.2 实现方式 81
2.13.3 工作方式 83
2.13.4 更多内容 84
2.13.5 延伸阅读 84
第3章 表单和视图 85
3.1 简介 85
3.2 技术需求 85
3.3 利用CRUDL函数创建一个应用程序 86
3.3.1 准备工作 86
3.3.2 实现方式 89
3.3.3 工作方式 92
3.3.4 更多内容 92
3.3.5 延伸阅读 93
3.4 保存模型实例的作者 93
3.4.1 准备工作 93
3.4.2 实现方式 93
3.4.3 工作方式 94
3.4.4 延伸阅读 95
3.5 上传图像 95
3.5.1 准备工作 95
3.5.2 实现方式 95
3.5.3 工作方式 98
3.5.4 延伸阅读 99
3.6 利用自定义模板创建一个表单布局 99
3.6.1 准备工作 99
3.6.2 实现方式 100
3.6.3 工作方式 103
3.6.4 延伸阅读 105
3.7 利用django-crispy-forms创建一个表单布局 105
3.7.1 准备工作 105
3.7.2 实现方式 106
3.7.3 工作方式 108
3.7.4 更多内容 109
3.7.5 延伸阅读 110
3.8 与表单集协同工作 110
3.8.1 准备工作 110
3.8.2 实现方式 110
3.8.3 工作方式 118
3.8.4 更多内容 120
3.8.5 延伸阅读 120
3.9 过滤对象列表 121
3.9.1 准备工作 121
3.9.2 实现方式 122
3.9.3 工作方式 127
3.9.4 延伸阅读 127
3.10 管理分页列表 128
3.10.1 准备工作 128
3.10.2 实现方式 128
3.10.3 工作方式 131
3.10.4 延伸阅读 132
3.11 合成基于类的视图 132
3.11.1 准备工作 132
3.11.2 实现方式 132
3.11.3 工作方式 134
3.11.4 更多内容 135
3.11.5 延伸阅读 135
3.12 提供Open Graph和Twitter Card数据 135
3.12.1 准备工作 135
3.12.2 实现方式 135
3.12.3 工作方式 138
3.12.4 延伸阅读 138
3.13 提供schema.org词汇表 139
3.13.1 准备工作 139
3.13.2 实现方式 139
3.13.3 工作方式 141
3.13.4 延伸阅读 141
3.14 生成PDF文档 142
3.14.1 准备工作 142
3.14.2 实现方式 142
3.14.3 工作方式 146
3.14.4 延伸阅读 147
3.15 利用Haystack和Whoosh实现多语言搜索 147
3.15.1 准备工作 147
3.15.2 实现方式 148
3.15.3 工作方式 153
3.15.4 延伸阅读 154
3.16 利用Elasticsearch DSL实现多语言搜索 154
3.16.1 准备工作 154
3.16.2 实现方式 154
3.16.3 工作方式 162
3.16.4 延伸阅读 163
第4章 模板和JavaScript 165
4.1 简介 165
4.2 技术需求 165
4.3 安排base.html模板 166
4.3.1 准备工作 166
4.3.2 实现方式 166
4.3.3 工作方式 168
4.3.4 延伸阅读 169
4.4 使用Django Sekizai 170
4.4.1 准备工作 170
4.4.2 实现方式 171
4.4.3 工作方式 172
4.4.4 延伸阅读 172
4.5 公开JavaScript中的设置项 172
4.5.1 准备工作 172
4.5.2 实现方式 173
4.5.3 工作方式 175
4.5.4 延伸阅读 176
4.6 使用HTML 5数据属性 176
4.6.1 准备工作 176
4.6.2 实现方式 179
4.6.3 工作方式 185
4.6.4 延伸阅读 187
4.7 提供响应式图像 187
4.7.1 准备工作 187
4.7.2 实现方式 187
4.7.3 工作方式 190
4.7.4 更多内容 192
4.7.5 延伸阅读 192
4.8 实现连续的滚动 192
4.8.1 准备工作 192
4.8.2 实现方式 193
4.8.3 工作方式 197
4.8.4 更多内容 199
4.8.5 延伸阅读 199
4.9 在模式对话框中打开对象的细节信息 199
4.9.1 准备工作 200
4.9.2 实现方式 200
4.9.3 工作方式 203
4.9.4 延伸阅读 204
4.10 实现Like微件 204
4.10.1 准备工作 205
4.10.2 实现方式 206
4.10.3 工作方式 210
4.10.4 延伸阅读 212
4.11 通过Ajax上传图像 212
4.11.1 准备工作 212
4.11.2 实现方式 212
4.11.3 工作方式 221
4.11.4 更多内容 223
4.11.5 延伸阅读 223
第5章 自定义模板过滤器和标签 225
5.1 简介 225
5.2 技术需求 225
5.3 遵循自定义的模板过滤器和标签规则 226
5.4 创建一个模板过滤器以显示帖子发布的天数 227
5.4.1 准备工作 227
5.4.2 实现方式 227
5.4.3 工作方式 228
5.4.4 更多内容 229
5.4.5 延伸阅读 229
5.5 创建一个模板过滤器以析取个媒体对象 229
5.5.1 准备工作 229
5.5.2 实现方式 230
5.5.3 工作方式 230
5.5.4 更多内容 231
5.5.5 延伸阅读 231
5.6 创建一个模板过滤器以识别URL 232
5.6.1 准备工作 232
5.6.2 实现方式 232
5.6.3 工作方式 233
5.6.4 延伸阅读 233
5.7 创建一个模板标签以包含一个模板 233
5.7.1 准备工作 233
5.7.2 实现方式 234
5.7.3 工作方式 235
5.7.4 更多内容 236
5.7.5 延伸阅读 237
5.8 创建一个模板标签以加载模板中的QuerySet 237
5.8.1 准备工作 237
5.8.2 实现方式 239
5.8.3 工作方式 241
5.8.4 延伸阅读 242
5.9 创建一个模板标签以作为模板解析内容 242
5.9.1 准备工作 242
5.9.2 实现方式 243
5.9.3 工作方式 244
5.9.4 延伸阅读 245
5.10 创建模板标签以调整请求查询参数 245
5.10.1 准备工作 245
5.10.2 实现方式 246
5.10.3 工作方式 248
5.10.4 延伸阅读 250
第6章 模型管理 251
6.1 简介 251
6.2 技术需求 251
6.3 自定义修改列表页面上的列 251
6.3.1 准备工作 252
6.3.2 实现方式 254
6.3.3 工作方式 255
6.3.4 延伸阅读 257
6.4 创建可排序的内联 257
6.4.1 准备工作 257
6.4.2 实现方式 258
6.4.3 工作方式 259
6.4.4 延伸阅读 260
6.5 创建管理动作 261
6.5.1 准备工作 261
6.5.2 实现方式 261
6.5.3 工作方式 264
6.5.4 延伸阅读 265
6.6 开发修改列表过滤器 265
6.6.1 准备工作 265
6.6.2 实现方式 265
6.6.3 工作方式 267
6.6.4 延伸阅读 268
6.7 修改第三方应用程序的应用程序标记 268
6.7.1 准备工作 268
6.7.2 实现方式 269
6.7.3 工作方式 269
6.7.4 延伸阅读 270
6.8 创建一个自定义账户应用程序 270
6.8.1 准备工作 270
6.8.2 实现方式 270
6.8.3 工作方式 274
6.8.4 延伸阅读 276
6.9 获取用户头像 277
6.9.1 准备工作 277
6.9.2 实现方式 277
6.9.3 更多内容 284
6.9.4 延伸阅读 284
6.10 将一幅地图插入至修改表单中 285
6.10.1 准备工作 285
6.10.2 实现方式 289
6.10.3 工作方式 297
6.10.4 延伸阅读 300
第7章 安全和性能 301
7.1 简介 301
7.2 技术需求 301
7.3 表单的跨站点请求伪造安全 302
7.3.1 准备工作 302
7.3.2 实现方式 302
7.3.3 工作方式 304
7.3.4 更多内容 304
7.3.5 延伸阅读 305
7.4 基于内容安全政策的请求安全 306
7.4.1 准备工作 306
7.4.2 实现方式 306
7.4.3 工作方式 307
7.4.4 延伸阅读 309
7.5 使用django-admin-honeypot 309
7.5.1 准备工作 310
7.5.2 实现方式 310
7.5.3 工作方式 310
7.5.4 更多内容 311
7.5.5 延伸阅读 313
7.6 实现密码验证 313
7.6.1 准备工作 313
7.6.2 实现方式 313
7.6.3 工作方式 316
7.6.4 更多内容 317
7.6.5 延伸阅读 317
7.7 下载授权文件 317
7.7.1 准备工作 317
7.7.2 实现方式 317
7.7.3 工作方式 320
7.7.4 延伸阅读 320
7.8 向图像中添加动态水印 321
7.8.1 准备工作 321
7.8.2 实现方式 321
7.8.3 工作方式 324
7.8.4 延伸阅读 325
7.9 基于Auth0的身份验证 325
7.9.1 准备工作 325
7.9.2 实现方式 326
7.9.3 工作方式 330
7.9.4 延伸阅读 332
7.10 缓存方法的返回值 332
7.10.1 准备工作 332
7.10.2 实现方式 332
7.10.3 工作方式 333
7.10.4 更多内容 334
7.10.5 延伸阅读 335
7.11 使用Memcached缓存Django视图 335
7.11.1 准备工作 335
7.11.2 实现方式 336
7.11.3 工作方式 337
7.11.4 延伸阅读 337
7.12 使用Redis缓存Django视图 337
7.12.1 准备工作 338
7.12.2 实现方式 338
7.12.3 工作方式 339
7.12.4 更多内容 340
7.12.5 延伸阅读 340
第8章 层次结构 341
8.1 简介 341
8.2 技术需求 343
8.3 利用django-mptt创建层次分类 343
8.3.1 准备工作 343
8.3.2 实现方式 343
8.3.3 工作方式 345
8.3.4 延伸阅读 346
8.4 利用django-mptt-admin创建分类管理界面 346
8.4.1 准备工作 347
8.4.2 实现方式 347
8.4.3 工作方式 348
8.4.4 延伸阅读 349
8.5 利用django-mptt在模板中渲染分类 350
8.5.1 准备工作 351
8.5.2 实现方式 351
8.5.3 工作方式 352
8.5.4 更多内容 353
8.5.5 延伸阅读 353
8.6 利用django-mptt和单选字段在表单中选择分类 353
8.6.1 准备工作 353
8.6.2 实现方式 354
8.6.3 工作方式 355
8.6.4 延伸阅读 356
8.7 利用django-mptt在表单中通过复选框列表选择多个分类 356
8.7.1 准备工作 357
8.7.2 实现方式 357
8.7.3 工作方式 362
8.7.4 延伸阅读 363
8.8 利用django-treebeard创建层次分类 363
8.8.1 准备工作 364
8.8.2 实现方式 364
8.8.3 工作方式 365
8.8.4 更多内容 366
8.8.5 延伸阅读 367
8.9 利用django-treebeard创建分类管理界面 367
8.9.1 准备工作 367
8.9.2 实现方式 367
8.9.3 工作方式 368
8.9.4 延伸阅读 370
第9章 导入和导出数据 371
9.1 简介 371
9.2 技术需求 371
9.3 从本地CSV文件中导入数据 371
9.3.1 准备工作 372
9.3.2 实现方式 374
9.3.3 工作方式 376
9.3.4 延伸阅读 377
9.4 从本地Excel文件中导入数据 378
9.4.1 准备工作 378
9.4.2 实现方式 378
9.4.3 工作方式 380
9.4.4 延伸阅读 381
9.5 从外部JSON文件中导入数据 381
9.5.1 准备工作 382
9.5.2 实现方式 384
9.5.3 工作方式 387
9.5.4 延伸阅读 388
9.6 从外部XML文件中导入数据 388
9.6.1 准备工作 388
9.6.2 实现方式 389
9.6.3 工作方式 392
9.6.4 更多内容 393
9.6.5 延伸阅读 393
9.7 针对搜索引擎准备分页网站地图 394
9.7.1 准备工作 394
9.7.2 实现方式 396
9.7.3 工作方式 397
9.7.4 更多内容 398
9.7.5 延伸阅读 398
9.8 创建可过滤的RSS订阅 398
9.8.1 准备工作 398
9.8.2 实现方式 401
9.8.3 工作方式 404
9.8.4 延伸阅读 404
9.9 使用Django REST框架创建一个API 404
9.9.1 准备工作 404
9.9.2 实现方式 405
9.9.3 工作方式 406
9.9.4 延伸阅读 410
第10章 其他内容 411
10.1 简介 411
10.2 技术需求 411
10.3 使用Django shell 412
10.3.1 准备工作 412
10.3.2 实现方式 412
10.3.3 工作方式 416
10.3.4 延伸阅读 416
10.4 使用数据库查询表达式 416
10.4.1 准备工作 416
10.4.2 实现方式 418
10.4.3 工作方式 421
10.4.4 延伸阅读 423
10.5 slugify()函数的猴子补丁以获得更好的国际支持 423
10.5.1 准备工作 423
10.5.2 实现方式 424
10.5.3 更多内容 424
10.5.4 延伸阅读 425
10.6 切换调试工具栏 425
10.6.1 准备工作 425
10.6.2 实现方式 426
10.6.3 工作方式 428
10.6.4 延伸阅读 429
10.7 使用ThreadLocalMiddleware 429
10.7.1 准备工作 430
10.7.2 实现方式 430
10.7.3 工作方式 431
10.7.4 延伸阅读 432
10.8 使用信号通知管理员有关新的条目 432
10.8.1 准备工作 432
10.8.2 实现方式 433
10.8.3 工作方式 434
10.8.4 延伸阅读 435
10.9 检查缺失设置项 435
10.9.1 准备工作 435
10.9.2 实现方式 435
10.9.3 工作方式 437
10.9.4 延伸阅读 438
第11章 测试 439
11.1 简介 439
11.2 需求条件 439
11.3 利用Mock测试视图 440
11.3.1 准备工作 440
11.3.2 实现方式 440
11.3.3 工作方式 442
11.3.4 更多内容 443
11.3.5 延伸阅读 443
11.4 利用Selenium测试用户界面 443
11.4.1 准备工作 444
11.4.2 实现方式 444
11.4.3 工作方式 448
11.4.4 延伸阅读 449
11.5 利用Django REST框架测试API 449
11.5.1 准备工作 449
11.5.2 实现方式 449
11.5.3 工作方式 454
11.5.4 延伸阅读 454
11.6 确保测试覆盖率 455
11.6.1 准备工作 455
11.6.2 实现方式 455
11.6.3 工作方式 457
11.6.4 延伸阅读 457
第12章 部署 459
12.1 简介 459
12.2 技术需求 460
12.3 发布可复用的Django应用程序 460
12.3.1 准备工作 460
12.3.2 实现方式 460
12.3.3 工作方式 464
12.3.4 延伸阅读 464
12.4 针对预发布环境利用mod_wsgi在Apache上部署 464
12.4.1 准备工作 464
12.4.2 实现方式 465
12.4.3 工作方式 473
12.4.4 延伸阅读 475
12.5 针对产品环境利用mod_wsgi在Apache上部署 475
12.5.1 准备工作 475
12.5.2 实现方式 476
12.5.3 工作方式 480
12.5.4 延伸阅读 481
12.6 针对预发布环境在Nginx和Gunicorn上部署 481
12.6.1 准备工作 481
12.6.2 实现方式 482
12.6.3 工作方式 490
12.6.4 延伸阅读 492
12.7 针对产品环境在Nginx和Gunicorn上部署 492
12.7.1 准备工作 492
12.7.2 实现方式 493
12.7.3 工作方式 496
12.7.4 延伸阅读 497
第13章 维护 499
13.1 简介 499
13.2 技术需求 499
13.3 创建和恢复MySQL数据库备份 499
13.3.1 准备工作 500
13.3.2 实现方式 500
13.3.3 工作方式 503
13.3.4 延伸阅读 504
13.4 创建和恢复PostgreSQL数据库备份 504
13.4.1 准备工作 504
13.4.2 实现方式 504
13.4.3 工作方式 507
13.4.4 延伸阅读 509
13.5 设置常规作业的定时任务 509
13.5.1 准备工作 509
13.5.2 实现方式 509
13.5.3 工作方式 511
13.5.4 更多内容 512
13.5.5 延伸阅读 512
13.6 日志事件 512
13.6.1 准备工作 513
13.6.2 实现方式 513
13.6.3 工作方式 516
13.6.4 延伸阅读 517
13.7 通过电子邮件获取详细的错误报告 517
13.7.1 准备工作 517
13.7.2 实现方式 518
13.7.3 更多内容 519
13.7.4 延伸阅读 520
1.1 简介 1
1.2 技术需求 2
1.3 与虚拟环境协同工作 2
1.3.1 准备工作 2
1.3.2 实现方式 3
1.3.3 工作方式 3
1.3.4 延伸阅读 3
1.4 创建一个项目文件结构 4
1.4.1 准备工作 4
1.4.2 实现方式 4
1.4.3 工作方式 6
1.4.4 更多内容 7
1.4.5 延伸阅读 7
1.5 利用pip处理项目依赖项 8
1.5.1 准备工作 8
1.5.2 实现方式 8
1.5.3 工作方式 9
1.5.4 更多内容 10
1.5.5 延伸阅读 10
1.6 针对开发、测试、预发布和产品环境,配置设置项 10
1.6.1 准备工作 10
1.6.2 实现方式 11
1.6.3 工作方式 12
1.6.4 延伸阅读 12
1.7 在设置项中定义相对路径 12
1.7.1 准备工作 13
1.7.2 实现方式 13
1.7.3 工作方式 13
1.7.4 延伸阅读 14
1.8 处理敏感设置项 14
1.8.1 准备工作 14
1.8.2 实现方式 14
1.8.3 工作方式 15
1.8.4 更多内容 15
1.8.5 延伸阅读 16
1.9 在项目中包含外部依赖项 16
1.9.1 准备工作 17
1.9.2 实现方式 17
1.9.3 工作方式 18
1.9.4 延伸阅读 18
1.10 以动态方式设置STATIC_URL 19
1.10.1 准备工作 19
1.10.2 实现方式 19
1.10.3 工作方式 20
1.10.4 更多内容 20
1.10.5 延伸阅读 22
1.11 将UTF-8设置为MySQL配置的默认编码机制 22
1.11.1 准备工作 22
1.11.2 实现方式 22
1.11.3 工作方式 23
1.11.4 更多内容 23
1.11.5 延伸阅读 23
1.12 创建Git忽略文件 23
1.12.1 准备工作 23
1.12.2 实现方式 23
1.12.3 工作方式 25
1.12.4 延伸阅读 25
1.13 删除Python编译文件 25
1.13.1 准备工作 25
1.13.2 实现方式 26
1.13.3 工作方式 26
1.13.4 更多内容 26
1.13.5 延伸阅读 26
1.14 遵循Python文件中的导入顺序 26
1.14.1 准备工作 26
1.14.2 实现方式 27
1.14.3 工作方式 27
1.14.4 更多内容 27
1.14.5 延伸阅读 28
1.15 创建应用程序配置 28
1.15.1 准备工作 28
1.15.2 实现方式 28
1.15.3 工作方式 29
1.15.4 更多内容 30
1.15.5 延伸阅读 30
1.16 定义可覆写的应用程序设置项 30
1.16.1 准备工作 31
1.16.2 实现方式 31
1.16.3 工作方式 33
1.16.4 延伸阅读 33
1.17 针对Django、Gunicorn、Nginx和PostgreSQL,与Docker容器协同工作 33
1.17.1 准备工作 34
1.17.2 实现方式 34
1.17.3 工作方式 38
1.17.4 更多内容 41
1.17.5 延伸阅读 41
第2章 模型和数据库结构 43
2.1 简介 43
2.2 技术需求 43
2.3 使用模型混入 44
2.3.1 准备工作 44
2.3.2 实现方式 44
2.3.3 工作方式 45
2.3.4 更多内容 45
2.3.5 延伸阅读 46
2.4 利用与URL相关的方法创建一个模型混入 46
2.4.1 准备工作 47
2.4.2 实现方式 47
2.4.3 工作方式 48
2.4.4 延伸阅读 49
2.5 创建一个模型混入以处理日期的创建和修改 50
2.5.1 准备工作 50
2.5.2 实现方式 50
2.5.3 工作方式 51
2.5.4 延伸阅读 51
2.6 创建一个模型混入以关注元标签 51
2.6.1 准备工作 52
2.6.2 实现方式 52
2.6.3 工作方式 54
2.6.4 延伸阅读 54
2.7 创建一个模型混入以处理Generic Relation 54
2.7.1 准备工作 55
2.7.2 实现方式 55
2.7.3 工作方式 58
2.7.4 延伸阅读 59
2.8 处理多语言字段 59
2.8.1 准备工作 59
2.8.2 实现方式 60
2.8.3 工作方式 64
2.8.4 延伸阅读 65
2.9 与模型翻译表协同工作 65
2.9.1 准备工作 66
2.9.2 实现方式 66
2.9.3 工作方式 69
2.9.4 延伸阅读 70
2.10 避免环状依赖项 71
2.10.1 准备工作 71
2.10.2 实现方式 71
2.10.3 延伸阅读 73
2.11 添加数据库约束 73
2.11.1 准备工作 73
2.11.2 实现方式 73
2.11.3 工作方式 74
2.11.4 更多内容 75
2.11.5 延伸阅读 76
2.12 使用迁移 76
2.12.1 准备工作 77
2.12.2 实现方式 77
2.12.3 工作方式 78
2.12.4 更多内容 78
2.12.5 延伸阅读 79
2.13 将外键修改为多对多字段 79
2.13.1 准备工作 79
2.13.2 实现方式 81
2.13.3 工作方式 83
2.13.4 更多内容 84
2.13.5 延伸阅读 84
第3章 表单和视图 85
3.1 简介 85
3.2 技术需求 85
3.3 利用CRUDL函数创建一个应用程序 86
3.3.1 准备工作 86
3.3.2 实现方式 89
3.3.3 工作方式 92
3.3.4 更多内容 92
3.3.5 延伸阅读 93
3.4 保存模型实例的作者 93
3.4.1 准备工作 93
3.4.2 实现方式 93
3.4.3 工作方式 94
3.4.4 延伸阅读 95
3.5 上传图像 95
3.5.1 准备工作 95
3.5.2 实现方式 95
3.5.3 工作方式 98
3.5.4 延伸阅读 99
3.6 利用自定义模板创建一个表单布局 99
3.6.1 准备工作 99
3.6.2 实现方式 100
3.6.3 工作方式 103
3.6.4 延伸阅读 105
3.7 利用django-crispy-forms创建一个表单布局 105
3.7.1 准备工作 105
3.7.2 实现方式 106
3.7.3 工作方式 108
3.7.4 更多内容 109
3.7.5 延伸阅读 110
3.8 与表单集协同工作 110
3.8.1 准备工作 110
3.8.2 实现方式 110
3.8.3 工作方式 118
3.8.4 更多内容 120
3.8.5 延伸阅读 120
3.9 过滤对象列表 121
3.9.1 准备工作 121
3.9.2 实现方式 122
3.9.3 工作方式 127
3.9.4 延伸阅读 127
3.10 管理分页列表 128
3.10.1 准备工作 128
3.10.2 实现方式 128
3.10.3 工作方式 131
3.10.4 延伸阅读 132
3.11 合成基于类的视图 132
3.11.1 准备工作 132
3.11.2 实现方式 132
3.11.3 工作方式 134
3.11.4 更多内容 135
3.11.5 延伸阅读 135
3.12 提供Open Graph和Twitter Card数据 135
3.12.1 准备工作 135
3.12.2 实现方式 135
3.12.3 工作方式 138
3.12.4 延伸阅读 138
3.13 提供schema.org词汇表 139
3.13.1 准备工作 139
3.13.2 实现方式 139
3.13.3 工作方式 141
3.13.4 延伸阅读 141
3.14 生成PDF文档 142
3.14.1 准备工作 142
3.14.2 实现方式 142
3.14.3 工作方式 146
3.14.4 延伸阅读 147
3.15 利用Haystack和Whoosh实现多语言搜索 147
3.15.1 准备工作 147
3.15.2 实现方式 148
3.15.3 工作方式 153
3.15.4 延伸阅读 154
3.16 利用Elasticsearch DSL实现多语言搜索 154
3.16.1 准备工作 154
3.16.2 实现方式 154
3.16.3 工作方式 162
3.16.4 延伸阅读 163
第4章 模板和JavaScript 165
4.1 简介 165
4.2 技术需求 165
4.3 安排base.html模板 166
4.3.1 准备工作 166
4.3.2 实现方式 166
4.3.3 工作方式 168
4.3.4 延伸阅读 169
4.4 使用Django Sekizai 170
4.4.1 准备工作 170
4.4.2 实现方式 171
4.4.3 工作方式 172
4.4.4 延伸阅读 172
4.5 公开JavaScript中的设置项 172
4.5.1 准备工作 172
4.5.2 实现方式 173
4.5.3 工作方式 175
4.5.4 延伸阅读 176
4.6 使用HTML 5数据属性 176
4.6.1 准备工作 176
4.6.2 实现方式 179
4.6.3 工作方式 185
4.6.4 延伸阅读 187
4.7 提供响应式图像 187
4.7.1 准备工作 187
4.7.2 实现方式 187
4.7.3 工作方式 190
4.7.4 更多内容 192
4.7.5 延伸阅读 192
4.8 实现连续的滚动 192
4.8.1 准备工作 192
4.8.2 实现方式 193
4.8.3 工作方式 197
4.8.4 更多内容 199
4.8.5 延伸阅读 199
4.9 在模式对话框中打开对象的细节信息 199
4.9.1 准备工作 200
4.9.2 实现方式 200
4.9.3 工作方式 203
4.9.4 延伸阅读 204
4.10 实现Like微件 204
4.10.1 准备工作 205
4.10.2 实现方式 206
4.10.3 工作方式 210
4.10.4 延伸阅读 212
4.11 通过Ajax上传图像 212
4.11.1 准备工作 212
4.11.2 实现方式 212
4.11.3 工作方式 221
4.11.4 更多内容 223
4.11.5 延伸阅读 223
第5章 自定义模板过滤器和标签 225
5.1 简介 225
5.2 技术需求 225
5.3 遵循自定义的模板过滤器和标签规则 226
5.4 创建一个模板过滤器以显示帖子发布的天数 227
5.4.1 准备工作 227
5.4.2 实现方式 227
5.4.3 工作方式 228
5.4.4 更多内容 229
5.4.5 延伸阅读 229
5.5 创建一个模板过滤器以析取个媒体对象 229
5.5.1 准备工作 229
5.5.2 实现方式 230
5.5.3 工作方式 230
5.5.4 更多内容 231
5.5.5 延伸阅读 231
5.6 创建一个模板过滤器以识别URL 232
5.6.1 准备工作 232
5.6.2 实现方式 232
5.6.3 工作方式 233
5.6.4 延伸阅读 233
5.7 创建一个模板标签以包含一个模板 233
5.7.1 准备工作 233
5.7.2 实现方式 234
5.7.3 工作方式 235
5.7.4 更多内容 236
5.7.5 延伸阅读 237
5.8 创建一个模板标签以加载模板中的QuerySet 237
5.8.1 准备工作 237
5.8.2 实现方式 239
5.8.3 工作方式 241
5.8.4 延伸阅读 242
5.9 创建一个模板标签以作为模板解析内容 242
5.9.1 准备工作 242
5.9.2 实现方式 243
5.9.3 工作方式 244
5.9.4 延伸阅读 245
5.10 创建模板标签以调整请求查询参数 245
5.10.1 准备工作 245
5.10.2 实现方式 246
5.10.3 工作方式 248
5.10.4 延伸阅读 250
第6章 模型管理 251
6.1 简介 251
6.2 技术需求 251
6.3 自定义修改列表页面上的列 251
6.3.1 准备工作 252
6.3.2 实现方式 254
6.3.3 工作方式 255
6.3.4 延伸阅读 257
6.4 创建可排序的内联 257
6.4.1 准备工作 257
6.4.2 实现方式 258
6.4.3 工作方式 259
6.4.4 延伸阅读 260
6.5 创建管理动作 261
6.5.1 准备工作 261
6.5.2 实现方式 261
6.5.3 工作方式 264
6.5.4 延伸阅读 265
6.6 开发修改列表过滤器 265
6.6.1 准备工作 265
6.6.2 实现方式 265
6.6.3 工作方式 267
6.6.4 延伸阅读 268
6.7 修改第三方应用程序的应用程序标记 268
6.7.1 准备工作 268
6.7.2 实现方式 269
6.7.3 工作方式 269
6.7.4 延伸阅读 270
6.8 创建一个自定义账户应用程序 270
6.8.1 准备工作 270
6.8.2 实现方式 270
6.8.3 工作方式 274
6.8.4 延伸阅读 276
6.9 获取用户头像 277
6.9.1 准备工作 277
6.9.2 实现方式 277
6.9.3 更多内容 284
6.9.4 延伸阅读 284
6.10 将一幅地图插入至修改表单中 285
6.10.1 准备工作 285
6.10.2 实现方式 289
6.10.3 工作方式 297
6.10.4 延伸阅读 300
第7章 安全和性能 301
7.1 简介 301
7.2 技术需求 301
7.3 表单的跨站点请求伪造安全 302
7.3.1 准备工作 302
7.3.2 实现方式 302
7.3.3 工作方式 304
7.3.4 更多内容 304
7.3.5 延伸阅读 305
7.4 基于内容安全政策的请求安全 306
7.4.1 准备工作 306
7.4.2 实现方式 306
7.4.3 工作方式 307
7.4.4 延伸阅读 309
7.5 使用django-admin-honeypot 309
7.5.1 准备工作 310
7.5.2 实现方式 310
7.5.3 工作方式 310
7.5.4 更多内容 311
7.5.5 延伸阅读 313
7.6 实现密码验证 313
7.6.1 准备工作 313
7.6.2 实现方式 313
7.6.3 工作方式 316
7.6.4 更多内容 317
7.6.5 延伸阅读 317
7.7 下载授权文件 317
7.7.1 准备工作 317
7.7.2 实现方式 317
7.7.3 工作方式 320
7.7.4 延伸阅读 320
7.8 向图像中添加动态水印 321
7.8.1 准备工作 321
7.8.2 实现方式 321
7.8.3 工作方式 324
7.8.4 延伸阅读 325
7.9 基于Auth0的身份验证 325
7.9.1 准备工作 325
7.9.2 实现方式 326
7.9.3 工作方式 330
7.9.4 延伸阅读 332
7.10 缓存方法的返回值 332
7.10.1 准备工作 332
7.10.2 实现方式 332
7.10.3 工作方式 333
7.10.4 更多内容 334
7.10.5 延伸阅读 335
7.11 使用Memcached缓存Django视图 335
7.11.1 准备工作 335
7.11.2 实现方式 336
7.11.3 工作方式 337
7.11.4 延伸阅读 337
7.12 使用Redis缓存Django视图 337
7.12.1 准备工作 338
7.12.2 实现方式 338
7.12.3 工作方式 339
7.12.4 更多内容 340
7.12.5 延伸阅读 340
第8章 层次结构 341
8.1 简介 341
8.2 技术需求 343
8.3 利用django-mptt创建层次分类 343
8.3.1 准备工作 343
8.3.2 实现方式 343
8.3.3 工作方式 345
8.3.4 延伸阅读 346
8.4 利用django-mptt-admin创建分类管理界面 346
8.4.1 准备工作 347
8.4.2 实现方式 347
8.4.3 工作方式 348
8.4.4 延伸阅读 349
8.5 利用django-mptt在模板中渲染分类 350
8.5.1 准备工作 351
8.5.2 实现方式 351
8.5.3 工作方式 352
8.5.4 更多内容 353
8.5.5 延伸阅读 353
8.6 利用django-mptt和单选字段在表单中选择分类 353
8.6.1 准备工作 353
8.6.2 实现方式 354
8.6.3 工作方式 355
8.6.4 延伸阅读 356
8.7 利用django-mptt在表单中通过复选框列表选择多个分类 356
8.7.1 准备工作 357
8.7.2 实现方式 357
8.7.3 工作方式 362
8.7.4 延伸阅读 363
8.8 利用django-treebeard创建层次分类 363
8.8.1 准备工作 364
8.8.2 实现方式 364
8.8.3 工作方式 365
8.8.4 更多内容 366
8.8.5 延伸阅读 367
8.9 利用django-treebeard创建分类管理界面 367
8.9.1 准备工作 367
8.9.2 实现方式 367
8.9.3 工作方式 368
8.9.4 延伸阅读 370
第9章 导入和导出数据 371
9.1 简介 371
9.2 技术需求 371
9.3 从本地CSV文件中导入数据 371
9.3.1 准备工作 372
9.3.2 实现方式 374
9.3.3 工作方式 376
9.3.4 延伸阅读 377
9.4 从本地Excel文件中导入数据 378
9.4.1 准备工作 378
9.4.2 实现方式 378
9.4.3 工作方式 380
9.4.4 延伸阅读 381
9.5 从外部JSON文件中导入数据 381
9.5.1 准备工作 382
9.5.2 实现方式 384
9.5.3 工作方式 387
9.5.4 延伸阅读 388
9.6 从外部XML文件中导入数据 388
9.6.1 准备工作 388
9.6.2 实现方式 389
9.6.3 工作方式 392
9.6.4 更多内容 393
9.6.5 延伸阅读 393
9.7 针对搜索引擎准备分页网站地图 394
9.7.1 准备工作 394
9.7.2 实现方式 396
9.7.3 工作方式 397
9.7.4 更多内容 398
9.7.5 延伸阅读 398
9.8 创建可过滤的RSS订阅 398
9.8.1 准备工作 398
9.8.2 实现方式 401
9.8.3 工作方式 404
9.8.4 延伸阅读 404
9.9 使用Django REST框架创建一个API 404
9.9.1 准备工作 404
9.9.2 实现方式 405
9.9.3 工作方式 406
9.9.4 延伸阅读 410
第10章 其他内容 411
10.1 简介 411
10.2 技术需求 411
10.3 使用Django shell 412
10.3.1 准备工作 412
10.3.2 实现方式 412
10.3.3 工作方式 416
10.3.4 延伸阅读 416
10.4 使用数据库查询表达式 416
10.4.1 准备工作 416
10.4.2 实现方式 418
10.4.3 工作方式 421
10.4.4 延伸阅读 423
10.5 slugify()函数的猴子补丁以获得更好的国际支持 423
10.5.1 准备工作 423
10.5.2 实现方式 424
10.5.3 更多内容 424
10.5.4 延伸阅读 425
10.6 切换调试工具栏 425
10.6.1 准备工作 425
10.6.2 实现方式 426
10.6.3 工作方式 428
10.6.4 延伸阅读 429
10.7 使用ThreadLocalMiddleware 429
10.7.1 准备工作 430
10.7.2 实现方式 430
10.7.3 工作方式 431
10.7.4 延伸阅读 432
10.8 使用信号通知管理员有关新的条目 432
10.8.1 准备工作 432
10.8.2 实现方式 433
10.8.3 工作方式 434
10.8.4 延伸阅读 435
10.9 检查缺失设置项 435
10.9.1 准备工作 435
10.9.2 实现方式 435
10.9.3 工作方式 437
10.9.4 延伸阅读 438
第11章 测试 439
11.1 简介 439
11.2 需求条件 439
11.3 利用Mock测试视图 440
11.3.1 准备工作 440
11.3.2 实现方式 440
11.3.3 工作方式 442
11.3.4 更多内容 443
11.3.5 延伸阅读 443
11.4 利用Selenium测试用户界面 443
11.4.1 准备工作 444
11.4.2 实现方式 444
11.4.3 工作方式 448
11.4.4 延伸阅读 449
11.5 利用Django REST框架测试API 449
11.5.1 准备工作 449
11.5.2 实现方式 449
11.5.3 工作方式 454
11.5.4 延伸阅读 454
11.6 确保测试覆盖率 455
11.6.1 准备工作 455
11.6.2 实现方式 455
11.6.3 工作方式 457
11.6.4 延伸阅读 457
第12章 部署 459
12.1 简介 459
12.2 技术需求 460
12.3 发布可复用的Django应用程序 460
12.3.1 准备工作 460
12.3.2 实现方式 460
12.3.3 工作方式 464
12.3.4 延伸阅读 464
12.4 针对预发布环境利用mod_wsgi在Apache上部署 464
12.4.1 准备工作 464
12.4.2 实现方式 465
12.4.3 工作方式 473
12.4.4 延伸阅读 475
12.5 针对产品环境利用mod_wsgi在Apache上部署 475
12.5.1 准备工作 475
12.5.2 实现方式 476
12.5.3 工作方式 480
12.5.4 延伸阅读 481
12.6 针对预发布环境在Nginx和Gunicorn上部署 481
12.6.1 准备工作 481
12.6.2 实现方式 482
12.6.3 工作方式 490
12.6.4 延伸阅读 492
12.7 针对产品环境在Nginx和Gunicorn上部署 492
12.7.1 准备工作 492
12.7.2 实现方式 493
12.7.3 工作方式 496
12.7.4 延伸阅读 497
第13章 维护 499
13.1 简介 499
13.2 技术需求 499
13.3 创建和恢复MySQL数据库备份 499
13.3.1 准备工作 500
13.3.2 实现方式 500
13.3.3 工作方式 503
13.3.4 延伸阅读 504
13.4 创建和恢复PostgreSQL数据库备份 504
13.4.1 准备工作 504
13.4.2 实现方式 504
13.4.3 工作方式 507
13.4.4 延伸阅读 509
13.5 设置常规作业的定时任务 509
13.5.1 准备工作 509
13.5.2 实现方式 509
13.5.3 工作方式 511
13.5.4 更多内容 512
13.5.5 延伸阅读 512
13.6 日志事件 512
13.6.1 准备工作 513
13.6.2 实现方式 513
13.6.3 工作方式 516
13.6.4 延伸阅读 517
13.7 通过电子邮件获取详细的错误报告 517
13.7.1 准备工作 517
13.7.2 实现方式 518
13.7.3 更多内容 519
13.7.4 延伸阅读 520
猜您喜欢