新書推薦:
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
《
安全感是内心长出的盔甲
》
售價:NT$
305.0
《
快人一步:系统性能提高之道
》
售價:NT$
505.0
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:NT$
352.0
《
算法图解(第2版)
》
售價:NT$
356.0
《
科学的奇幻之旅
》
售價:NT$
352.0
《
画艺循谱:晚明的画谱与消闲
》
售價:NT$
653.0
|
編輯推薦: |
《Django4实例精解》将引领读者使用易于遵循的循序渐进的方法,创建真实的应用程序、处理常见的问题并获取最佳实现方案。
在阅读完本书后,读者将能够较好地理解Django的工作方式以及如何构建高级的Python Web应用程序。
|
內容簡介: |
《Django4实例精解》详细阐述了与Django 4相关的基本解决方案,主要包括构建一个博客应用程序、利用高级特性增强博客应用程序、扩展博客应用程序、构建社交网站、实现社交身份验证、共享网站上的内容、跟踪用户动作、构建在线商店、管理支付和订单、扩展商店、向商店中添加国际化功能、构建在线学习平台、创建内容管理系统、渲染和缓存内容、构建API、构建聊天服务器、生产环境等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
|
關於作者: |
安东尼奥·米勒是Nucoro的联合创始人兼首席技术官,该金融科技平台允许金融机构构建、自动化和扩展数字财富管理产品。安东尼奥还是Exo Investing的首席技术官,Exo Investing是一个面向英国市场的人工智能驱动的数字投资平台。
|
目錄:
|
第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
|
內容試閱:
|
前 言Django是一个开源的Python Web框架,旨在实现快速开发和简洁、实用的设计。 Django简化了开发过程,并为初学者提供了相对友好的学习曲线。Django遵循Python的“内置电池”哲学,提供了一组丰富而通用的模块,可以解决较为常见的Web开发问题。Django的简单性连同其功能强大的特性对于初学者和专家级程序员来说均颇具吸引力。Django的设计注重简单性、灵活性、可读性和可扩展性。当今,Django被无数初创公司和大型组织使用,如Instagram、Spotify、Pinterest、Udemy、Robinhood和Coursera。在过去的几年里,在Stack Overflow的年度开发者调查中,Django一直被全世界的开发者选为最受欢迎的Web框架之一,这并非巧合。本书将引领读者了解利用Django开发专业Web应用程序的整体过程,通过多个项目解释Django Web框架的工作方式,其中涉及与框架自身相关的内容,同时还阐述Django的各种应用方式。本书内容不仅涵盖Django,还包含其他一些常见技术,如PostgreSQL、Redis、Celery、RabbitMQ和Memcached。读者通过本书可学会将这些技术集成至Django项目中,进而创建高级功能并构建复杂的Web应用程序。本书将引领读者使用易于遵循的循序渐进的方法,创建真实的应用程序、处理常见的问题并获取最佳实现方案。在阅读完本书后,读者将能够较好地理解Django的工作方式以及如何构建高级的Python Web应用程序。适用读者本书可作为刚刚接触Django的程序员的入门书籍,并可供拥有Python知识且希望以实用的方式学习Django的开发人员使用。对于Django新手,本书将从零开始构建实际项目以使读者掌握Django框架的重要内容。阅读本书时,读者需要熟悉一些编程概念,除了基本的Python知识,读者还应具备HTML和JavaScript方面的知识。 本书内容本书涵盖了Django Web应用程序开发方面的诸多主题,进而构建4个不同的全功能的Web应用程序,全部内容分为17章。? 博客(blog)应用程序(第1~3章)。? 图像收藏网站(第4~7章)。? 在线商店(第8~11章)。? 在线学习平台(第12~17章)。其中,每章包含多个Django特性。第1章将通过一个博客应用程序介绍Django框架。其间,我们将创建基本的博客模型、视图、模板和URL以显示博客帖子。我们将学习如何利用对象关系映射器(ORM)构建QuerySet,并配置Django管理网站。第2章将讨论如何向博客添加分页机制,以及如何实现基于类的Django视图。同时,我们还将学习如何利用Django发送电子邮件,以及处理表单和模型表单。除此之外,我们还将实现博客帖子的评论系统。第3章将考查如何集成第三方应用程序。本章将创建一个标签系统,并学习如何构建复杂的QuerySet以推荐类似的帖子。另外,我们还将学习如何创建自定义模板标签和过滤器。不仅如此,本章还将考查如何使用网站地图框架创建帖子的RSS订阅。最后,我们将通过PostgreSQL的全文本搜索功能构建一个搜索引擎。第4章将阐述如何构建一个社交网站,我们将学习如何使用Django身份验证框架,并通过自定义概要模型扩展用户模型。此外,本章还将介绍如何使用消息框架,并构建一个自定义身份验证后端。第5章将介绍使用基于Python Social Auth的OAuth 2与Google、Facebook和Twitter实现社交身份验证。这里,我们将学习如何使用Django Extensions并通过HTTPS运行开发服务器,进而自定义社交身份验证管线,以自动化用户信息的创建。第6章将讨论如何将社交应用程序转换为图像收藏网站。其间,我们将定义模型的多对多关系,并创建一个与项目集成的JavaScript书签小工具。此外,本章还将展示如何生成图像缩略图。同时,我们还将学习如何利用JavaScript和Django实现匿名HTTP请求和无限滚动分页机制。第7章将考查如何构建一个关注系统。通过创建一个用户活动流应用程序,我们将完成图像收藏网站。另外,我们还将讨论如何创建模型间的通用关系,并优化QuerySet。我们将处理信号并实现反规范化。我们将采用Django Debug Toolbar获取相应的调试信息。最后,我们还将把Redis集成至项目中,并对图像视图进行计数,并利用Redis创建图像查看排名。第8章将探讨如何创建一个在线商店。其中,我们将构建商品目录模型,并通过Django会话创建一个商品购物车。随后,我们将为商品购物车构建一个上下文预处理器,并学习如何管理顾客订单。此外,我们将学习如何利用Celery和RabbitMQ发送异步通知。最后,我们还将学习如何通过Flower监测Celery。第9章将解释如何将一个支付网关与在线商店进行集成。在应用程序中,我们将集成Stripe Checkout并接收异步支付通知。除此之外,我们还将在管理网站中实现自定义视图,并定制管理网站以将订单导出为CSV文件。最后,我们还将学习如何动态生成PDF发票。第10章将考查如何创建优惠券系统,并对购物车中的商品进行打折。相应地,我们将更新Stripe Checkout集成,以实现优惠券打折功能,并将优惠券应用于订单上。其间我们将使用Redis存储经常一起购买的商品,并使用这些信息构建一个商品推荐引擎。第11章将展示如何向项目中添加国际化功能。并学习如何生成、管理翻译文件,同时翻译Python代码中的字符串和Django模板。这里,我们将采用Rosetta来管理翻译并实现每种语言的URL。另外,我们还将学习如何通过django-parler来翻译模型字段,以及如何使用基于ORM的翻译功能。最后,我们将利用django-localflavor创建一个本地化的表单字段。第12章将创建一个在线学习平台,以进一步丰富项目的特性,并创建内容管理系统的初始模型。此处,我们将采用模型继承机制来创建多态内容的数据模型,同时还将学习如何通过构建一个字段来排序对象,进而创建自定义模型字段。最后,本章将实现CMS的身份验证视图。第13章将讨论如何通过基于类的视图和混入来创建一个CMS。其中,我们将使用Django分组和授权系统来限制对视图的访问并实现表单集,以编辑课程内容。另外,我们还将创建一种下拉功能,以利用JavaScript和Django重新排序课程模块及其内容。第14章将介绍如何实现课程目录的公共视图。其间,我们将创建一个学生注册系统,并管理学生的课程注册。我们还将创建一个功能以渲染课程模块的不同类型的内容。除此之外,我们还将学习如何利用Django缓存框架来缓存内容,以及配置项目的Memcached和Redis缓存后端。最后,我们将学习如何利用管理网站来监测Redis。第15章考查如何利用Django REST框架构建项目的RESTful API。在本章中,我们将学习创建模型的序列化器和自定义API视图。接下来,我们将处理API身份验证并实现API视图的授权。另外,我们还将学习如何构建API视图集合和路由器。最后,本章将讨论如何利用Requests库自定义API。第16章将阐述如何利用Django Channels来创建学生的实时聊天服务器。这里,我们将实现基于WebSocket的异步通信功能。相应地,我们将创建一个基于Python的WebSocket使用者,并实现基于JavaScript的WebSocket客户端。随后,我们将利用Redis设置一个通道层,并使WebSocket使用者完全异步。第17章将展示创建多环境设置,以及通过PostgreSQL、Redis、uWSGI、NGINX、 Daphne、Docker Compose设置生产环境。另外,我们还将学习如何通过HTTPS安全地处理项目,并使用Django系统检查框架。最后,本章还将讨论如何构建自定义中间件及自定义管理命令。背景知识? 读者应具有Python方面的背景知识。? 读者应熟悉HTML和JavaScript。? 建议读者阅读Django官方文档中第1~3部分中的内容,对应网址为https://docs. djangoproject.com/en/4.1/intro/tutorial01/。下载示例代码文件本书代码托管于GitHub上,对应网址为https://github.com/PacktPublishing/Django-4- by-example。除此之外,读者还可访问https://github.com/PacktPublishing/,其中包含了其他代码包和视频等丰富的内容。下载彩色图像我们提供了本书中彩色的截图/图表的图像,读者可访问https://static.packt-cdn.com/ downloads/9781801813051_ColorImages.pdf进行下载。 本书约定本书采用了一些文本方面的约定表达方法。代码块如下所示。 from django.contrib import adminfrom .models import Post admin.site.register(Post) 代码块中希望引起读者足够重视的部分采用粗体表示,如下所示。 INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘blog.apps.BlogConfig’,] 命令行输入或输出如下所示。 python manage.py runserver 表示警告或重要的注意事项。 表示提示信息或操作技巧。读者反馈和客户支持欢迎读者对本书提出建议或意见反馈,对此,读者可向feedback@packtpub.com发送邮件,并以书名作为邮件标题。勘误表尽管我们希望做到尽善尽美,但书中难免有疏漏和不妥之处。如果读者发现谬误之处,无论是文字错误抑或是代码错误,还望不吝赐教。对此,读者可访问http://www.packtpub. com/submit-errata,选取对应书籍,输入并提交相关问题的详细内容。版权须知一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知我们网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。若读者针对某项技术具有专家级的见解,抑或计划撰写或完善某部著作,则可访问http://authors.packtpub.com。问题解答读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为您服务。
|
|