首页 > 图书中心 > Django4实例精解

目录

目    录

第1章  构建一个博客应用程序 1

1.1  安装Python 2

1.2  创建Python虚拟环境 2

1.3  安装Django 3

1.3.1  利用pip安装Django 4

1.3.2  Django 4中的新特性 4

1.4  Django概述 5

1.5  主框架组件 5

1.6  Django架构 5

1.7  创建第一个项目 6

1.7.1  应用初始数据库迁移 7

1.7.2  运行开发服务器 8

1.7.3  项目设置项 10

1.7.4  项目和应用程序 11

1.7.5  创建一个应用程序 12

1.8  创建博客数据模型 12

1.8.1  创建Post模型 13

1.8.2  添加日期时间字段 14

1.8.3  定义默认排序顺序 15

1.8.4  添加一个数据库索引 16

1.8.5  激活应用程序 17

1.8.6  添加一个status字段 17

1.8.7  添加多对一关系 20

1.8.8  创建并应用迁移 21

1.9  创建模型的管理网站 24

1.9.1  创建一个超级用户 24

1.9.2  Django管理网站 24

1.9.3  向管理网站中添加模型 25

1.9.4  定制模型的显示方式 27

1.10  与QuerySet和管理器协同工作 29

1.10.1  创建对象 30

1.10.2  更新对象 31

1.10.3  检索对象 31

1.10.4  删除对象 32

1.10.5  QuerySet何时取值 33

1.10.6  创建模型管理器 33

1.11  构建列表和详细视图 35

1.11.1  创建列表和详细视图 35

1.11.2  使用get_object_or_404快捷方式 36

1.11.3  添加视图的URL模式 37

1.12  创建视图的模板 38

1.12.1  创建基础模板 39

1.12.2  创建帖子列表模板 40

1.12.3  访问应用程序 41

1.12.4  创建帖子详细模板 41

1.13  请求/响应循环 42

1.14  附加资源 43

1.15  本章小结 44

第2章  利用高级特性增强博客应用程序 45

2.1  使用模型的标准URL 45

2.2  创建帖子的SEO友好的URL 48

2.3  调整URL模式 49

2.4  调整视图 50

2.5  调整帖子的标准URL 50

2.6  添加分页 51

2.6.1  向帖子列表视图中添加分页 52

2.6.2  创建一个分页模板 52

2.6.3  处理分页错误 55

2.7  构建基于类的视图 58

2.7.1  为何采用基于类的视图 59

2.7.2  使用基于类的视图列出帖子 59

2.8  基于电子邮件的推荐帖子 61

2.8.1  利用Django创建表单 61

2.8.2  处理视图中的表单 63

2.8.3  利用Django发送电子邮件 64

2.8.4  在视图中发送电子邮件 68

2.8.5  在模板中渲染表单 70

2.9  创建一个评论系统 74

2.9.1  创建一个评论模型 74

2.9.2  向管理网站中添加评论 76

2.9.3  从模型中创建表单 77

2.9.4  在视图中处理ModelForms 78

2.9.5  创建评论表单的模板 80

2.9.6  向帖子详细视图中添加评论 82

2.9.7  向帖子详细模板中添加评论 83

2.10  附加资源 89

2.11  本章小结 90

第3章  扩展博客应用程序 91

3.1  添加标签功能 91

3.2  根据相似性检索帖子 100

3.3  创建自定义模板标签和过滤器 105

3.3.1  实现自定义模板标签 105

3.3.2  创建一个简单的模板标签 106

3.3.3  创建一个包含模板标签 108

3.3.4  创建返回QuerySet的模板标签 109

3.3.5  实现自定义模板过滤器 112

3.3.6  创建模板过滤器以支持Markdown语法 112

3.4  向网站中添加网站地图 117

3.5  创建博客帖子的订阅源 121

3.6  向博客中添加全文本搜索 128

3.6.1  安装PostgreSQL 129

3.6.2  创建PostgreSQL数据库 129

3.6.3  转储现有的数据 130

3.6.4  切换项目中的数据库 131

3.6.5  将数据加载至新数据库中 132

3.6.6  简单的搜索查询 133

3.6.7  针对多个字段搜索 134

3.6.8  构建一个搜索视图 134

3.6.9  词干和排名结果 138

3.6.10  不同语言中的词干提取和移除停用词 139

3.6.11  加权查询 140

3.6.12  使用三元组相似性进行搜索 140

3.7  附加资源 142

3.8  本章小结 143

第4章  构建社交网站 145

4.1  创建社交网站项目 145

4.2  使用Django身份验证框架 147

4.2.1  创建一个登录视图 148

4.2.2  使用Django身份验证视图 154

4.2.3  登录和注销视图 155

4.2.4  修改密码视图 160

4.2.5  重置密码视图 163

4.3  用户注册和用户个人信息 170

4.3.1  用户注册 170

4.3.2  扩展用户模型 176

4.3.3  安装Pillow并处理媒体文件 177

4.3.4  创建资料模型的迁移 178

4.2.5  使用消息框架 184

4.4  构建自定义身份验证后端 187

4.5  附加资源 191

4.6  本章小结 192

第5章  实现社交身份验证 193

5.1  向网站中添加社交身份验证 193

5.1.1  通过HTTPS运行开发服务器 196

5.1.2  利用Facebook进行身份验证 199

5.1.3  利用Twitter进行身份验证 206

5.1.4  使用Google进行身份验证 215

5.1.5  为注册社交认证的用户创建资料文件 223

5.2  附加资源 225

5.3  本章小结 226

第6章  共享网站上的内容 227

6.1  创建一个图像收藏网站 227

6.1.1  构建图像模型 228

6.1.2  创建多对多关系 230

6.1.3  在管理网站注册图像模型 231

6.2  从其他网站上发布内容 231

6.2.1  清除表单字段 232

6.2.2  安装Requests库 233

6.2.3  覆写ModelForm的ave()方法 233

6.2.4  利用JavaScript构建书签工具 238

6.3  创建图像的详细视图 250

6.4  利用easy-thumbnails创建图像的缩略图 253

6.5  利用JavaScript添加异步动作 255

6.5.1  在DOM上加载JavaScript 257

6.5.2  JavaScript中HTTP请求的跨站点请求伪造 258

6.5.3  利用JAvaScript实现HTTP请求 259

6.6  向图像列表中添加无限滚动分页机制 265

6.7  附加资源 271

6.8  本章小结 272

第7章  跟踪用户动作 273

7.1  构建关注系统 273

7.1.1  利用中间模型创建多对多关系 274

7.1.2  创建用户资料的列表和详细视图 277

7.1.3  利用JavaScript添加关注/取消关注动作 282

7.2  构建通用的活动流应用程序 284

7.2.1  使用contenttypes框架 285

7.2.2  向模型中添加通用关系 286

7.2.3  避免活动流中的重复动作 289

7.2.4  向活动流中添加用户动作 291

7.2.5  显示活动流 293

7.2.6  优化涉及关联对象的QuerySet 294

7.2.7  创建动作模板 296

7.3  针对反规范化计数使用信号 298

7.3.1  与信号协同工作 298

7.3.2  应用程序配置类 301

7.4  使用Django Debug Toolbar 303

7.4.1  安装Django Debug Toolbar 303

7.4.2  Django Debug Toolbar 305

7.4.3  Django Debug Toolbar命令 308

7.5  利用Redis计数图像视图 309

7.5.1  安装Docker 310

7.5.2  安装Redis 310

7.5.3  通过Python使用Redis 312

7.5.4  将图像视图存储于Redis中 313

7.5.5  将排名存储于Redis中 315

7.5.6  Redis适用场景 317

7.6  附加资源 318

7.7  本章小结 319

第8章  构建在线商店 321

8.1  创建在线商店项目 321

8.1.1  创建商品目录模型 322

8.1.2  在管理网站上注册目录模型 326

8.1.3  构建目录视图 328

8.1.4  创建目录模板 330

8.2  构建购物车 335

8.2.1  使用Django会话 335

8.2.2  会话设置 336

8.2.3  会话过期 337

8.2.4  将购物车存储至会话中 337

8.2.5  创建购物车视图 341

8.2.6  针对当前购物车创建上下文处理器 349

8.3  注册客户订单 352

8.3.1  创建订单模型 352

8.3.2  在管理网站中包含订单模型 354

8.3.3  创建自定义表单 355

8.4  异步任务 360

8.4.1  与异步任务协同工作 361

8.4.2  worker、消息队列和消息代理 361

8.5  附加资源 371

8.6  本章小结 371

第9章  管理支付和订单 373

9.1  集成支付网关 373

9.1.1  创建Stripe账户 374

9.1.2  安装Stripe Python库 376

9.1.3  向项目中添加Stripe 377

9.1.4  构建支付处理过程 378

9.1.5  测试结算过程 387

9.1.6  使用webhook接收支付通知 394

9.1.7  在订单中引用Stripe支付 401

9.2  将订单导出为CSV文件 405

9.3  利用自定义视图扩展管理网站 408

9.4  以动态方式生成PDF发票 413

9.4.1  安装WeasyPrint 413

9.4.2  创建PDF模板 413

9.4.3  渲染PDF文件 414

9.4.4  通过电子邮件发送PDF文件 418

9.5  附加资源 421

9.6  本章小结 422

第10章  扩展商店 423

10.1  创建优惠券系统 423

10.1.1  构建优惠券系统 424

10.1.2  将优惠券应用于购物车上 427

10.1.3  将优惠券应用于订单上 434

10.1.4  针对Stripe Checkout创建优惠券 439

10.1.5  将优惠券添加至订单和PDF发票中 441

10.2  构建推荐引擎 444

10.3  附加资源 452

10.4  本章小结 453

第11章  向商店中添加国际化功能 455

11.1  基于Django的国际化 455

11.1.1  国际化和本地化设置 456

11.1.2  国际化管理命令 457

11.1.3  安装gettext工具集 457

11.1.4  如何向Django项目中添加翻译 457

11.1.5  Django如何确定当前语言 457

11.2  准备项目以实现国际化 458

11.3  翻译Python代码 459

11.3.1  标准翻译 460

11.3.2  延迟翻译 460

11.3.3  变量翻译 460

11.3.4  翻译中的复数形式 460

11.3.5  翻译自己的代码 461

11.4  翻译模板 465

11.4.1  {% trans %}模板标签 465

11.4.2  {% blocktrans %}模板标签 465

11.4.3  翻译shop模板 466

11.5  使用Rosetta翻译界面 470

11.6  模糊翻译 472

11.7  国际化的URL模式 473

11.7.1  向URL模式中添加语言前缀 473

11.7.2  翻译URL模式 474

11.8  允许用户切换语言 478

11.9  利用django-parler翻译模型 480

11.9.1  安装django-parler 480

11.9.2  翻译模型字段 481

11.9.3  将翻译集成至管理网站中 483

11.9.4  创建模型翻译的迁移 484

11.9.5  结合ORM使用翻译 486

11.9.6  调整翻译视图 487

11.10  本地化格式 489

11.11  使用django-localflavor验证表单字段 490

11.12  附加资源 491

11.13  本章小结 492

第12章  构建在线学习平台 493

12.1  设置在线学习项目 493

12.2  服务于媒体文件 494

12.3  构建course模块 495

12.3.1  在管理网站中注册模型 498

12.3.2  使用fixture提供模型的初始数据 498

12.4  针对多态内容创建模型 501

12.4.1  使用模型继承 502

12.4.2  创建Content模型 504

12.4.3  创建自定义模型字段 506

12.4.4  向模块和内容对象中添加顺序 508

12.5  添加身份验证视图 512

12.5.1  添加身份验证系统 512

12.5.2  创建身份验证模板 513

12.6  附加资源 516

12.7  本章小结 517

第13章  创建内容管理系统 519

13.1  创建CMS 519

13.1.1  创建基于类的视图 519

13.1.2  针对基于类的视图使用混入 520

13.1.3  与分组和权限协同工作 522

13.2  管理课程模块及其内容 530

13.2.1  对课程模块使用表单集 530

13.2.2  向课程模块添加内容 534

13.2.3  管理模块及其内容 539

13.2.4  重新排序模块及其内容 544

13.3  附加资源 552

13.4  本章小结 553

第14章  渲染和缓存内容 555

14.1  显示课程 555

14.2  添加学生注册信息 561

14.2.1  创建学生的注册视图 561

14.2.2  注册课程 564

14.3  访问课程内容 567

14.4  使用缓存框架 573

14.4.1  有效的缓存后端 573

14.4.2  安装Memcached 574

14.4.3  安装Memcached Docker镜像 574

14.4.4  安装Memcached Python绑定 574

14.4.5  Django缓存设置项 575

14.4.6  将Memcached添加至项目中 575

14.4.7  缓存级别 576

14.4.8  使用低级别的缓存API 576

14.4.9  利用Django Debug Toolbar检查缓存请求 578

14.4.10  基于动态数据的缓存 581

14.4.11  缓存模板片段 582

14.4.12  缓存视图 583

14.4.13  使用逐站点缓存 583

14.4.14  使用Redis缓存后端 585

14.4.15  利用Django Redisboard监视Redis 585

14.5  附加资源 587

14.6  本章小结 588

 

第15章  构建API 589

15.1  构建RESTful API 589

15.1.1  安装Django REST框架 590

15.1.2  定义序列化器 591

15.1.3  理解解析器和渲染器 592

15.1.4  构建列表和详细视图 593

15.1.5  使用API 594

15.1.6  创建嵌套的序列化器 596

15.1.7  构建自定义API视图 598

15.1.8  处理身份验证 599

15.1.9  向视图中添加权限 600

15.1.10  构建ViewSet和路由器 601

15.1.11  向ViewSet添加附加动作 603

15.1.12  创建自定义权限 604

15.1.13  序列化课程内容 604

15.1.14  使用RESTful API 607

15.2  附加资源 609

15.3  本章小结 610

第16章  构建聊天服务器 611

16.1  创建聊天应用程序 611

16.2  基于Channels的实时Django 614

16.2.1  基于ASGI的异步应用程序 615

16.2.2  基于Channels的请求/响应循环 615

16.3  安装Channels 617

16.4  编写使用者 619

16.5  路由机制 620

16.6  实现WebSocket客户端 621

16.7  启用通道层 628

16.7.1  通道和分组 628

16.7.2  利用Redis设置通道层 628

16.7.3  更新使用者并广播消息 629

16.7.4  向消息中添加上下文 634

16.8  将使用者调整为全异步 637

16.9  将聊天室应用程序与现有视图集成 639

16.10  附加资源 640

16.11  本章小结 640

第17章  生产环境 641

17.1  创建生产环境 641

17.1.1  针对多个环境管理设置项 642

17.1.2  本地环境设置项 643

17.1.3  运行本地环境 643

17.1.4  生产环境设置项 644

17.2  使用Docker Compose 645

17.2.1  安装Docker Compose 645

17.2.2  创建Dockerfile 646

17.2.3  添加Python需求条件 647

17.2.4  创建Docker Compose 648

17.2.5  配置PostgreSQL服务 651

17.2.6  应用数据库迁移并创建超级用户 654

17.2.7  配置Redis服务 654

17.3  利用WSGI和NGINX服务于Django 656

17.3.1  使用uWSGI 656

17.3.2  配置uWSGI 657

17.3.3  使用NGINX 658

17.3.4  配置NGINX 659

17.3.5  使用主机名 661

17.3.6  服务于静态和媒体数据资源 662

17.4  基于SSL/TLS的站点的安全 665

17.4.1  针对生产环境检查项目 665

17.4.2  针对SSL/TLS配置Django项目 666

17.4.3  生成SSL/TLS证书 667

17.4.4  配置NGINX以使用SSL/TLS 667

17.4.5  将HTTP流量重定向至HTTPS 670

17.5  针对Django Channels使用Daphne 671

17.5.1  针对WebSocket使用安全的连接 673

17.5.2  在NGINX配置中包含Daphne 673

17.6  创建自定义中间件 676

17.6.1  创建子域中间件 677

17.6.2  利用NGINX服务于多个子域 678

17.7  实现自定义管理命令 679

17.8  附加资源 681

17.9  本章小结 683

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘