书籍详情
《Django4实例精解》[53M]百度网盘|亲测有效|pdf下载
  • Django4实例精解

  • 出版社:清华大学出版社
  • 作者:[美] 安东尼奥·米勒 著,李伟 译
  • 出版时间:2023-11-01
  • 热度:8756
  • 上架时间:2025-01-04 08:18:29
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

内容简介

《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

前言/序言

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 admin

from .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,我们将竭诚为您服务。



相关推荐