Django框架是专门帮助开发人员快速、高效地构建健壮和功能强大的Web应用程序而设计的。其间,Django框架负责处理大量的枯燥和重复的工作,解决诸如项目结构、数据库对象-关系映射、模板机制、表单验证、会话、身份验证、安全性、Cookie管理、国际化、基本管理和脚本的数据访问接口等问题。Django构建于Python编程语言之上,该语言自身强制执行清晰和易读的代码。除了核心框架,Django的设计目的是让开发人员能够创建第三方模块,进而可与自己的应用程序结合使用。另外,Django有个已经建立的充满活力的社区,读者可从中查找源代码、寻求帮助并贡献自己的意见。
本书将利用Django 3.0框架指导读者完成Web开发过程中的各个阶段。首先将讨论项目的配置和结构;随后介绍如何使用复用组件以定义数据库结构,以及如何通过项目的生命周期对其进行管理。相应地,本书将通过表单和视图访问输入和列出数据。此外,我们还将处理响应式模板和JavaScript以增强用户体验。接下来,我们将通过自定义过滤器和标签提升Django的模板系统,从而使前端开发更具灵活性。在此之后,我们还将细化管理界面,以简化内容编辑器的工作流。据此,我们将重点转移至项目的稳定性和健壮性上,进而优化应用程序,同时提升应用程序的安全性。随后将介绍如何高效地存储和管理层次结构,并展示如何从不同的数据源收集数据。其间将会发现,以某些格式向其他处提供自身的数据比想象中的要更加简单。接下来将介绍Django项目代码的编程和调试技巧,并通过一些有效的选择方案测试代码。在本书的最后,我们还将展示如何将项目部署至产品中,并通过设置维护操作完成开发周期。
与其他一些仅涉及框架自身的Django书籍相比,本书引入了一些较为重要的第三方模块和工具以帮助我们完成Web开发。除此之外,我们还借助Bootstrap前端框架和jQuery JavaScript库提供了一些示例,从而简化某些高级、复杂的用户界面的创建工作。
适用读者
如果读者具有一定的Django使用经验,并想进一步提升自己的技能,那么本书将十分适合于你。本书适用于中级和专业Django开发人员,旨在构建多语言、安全的、响应式的、可伸缩的健壮型项目。
本书内容
第1章将介绍Django项目所需的基本设置和配置步骤,其中涉及虚拟环境、Docker、不同环境和数据库间的项目设置。
第2章将解释如何编写模块构建过程中的可复用代码。这里,用新应用程序首先需要定义的是数据模块,这将构成项目的主要组成部分。随后将学习如何将多语言数据保存至数据库中。另外,本章还将学习如何利用Django迁移管理数据库模式变化和数据操控。
第3章将讨论如何构建视图和表单,用于数据显示和编辑。其间,我们将学习如何使用微格式和其他协议,以确保页面更具可读性,进而展示搜索结果和社交网络中的显示内容。另外,本章还将学习如何生成PDF文档和实现多语言搜索。
第4章将介绍模板和JavaScript结合使用的实际示例,其间将整合下列内容:面向用户的渲染模板表达信息,以及在现代站点中JavaScript提供的重要的增强内容,进而丰富用户体验。
第5章将介绍如何创建和使用自己的模板过滤器和标签。其间将会看到,可扩展默认的Django模板系统以满足模板开发人员的要求。
第6章将探讨默认的Django管理界面,并引领读者通过自己的功能扩展该管理界面。
第7章将深入讨论Django固有或外部的项目安全和优化方法。
第8章将介绍Django中树状结构的创建和操控,同时还将django-mptt或treebeard库引入工作流。本章将展示如何使用这两种库实现层次结构的显示和管理。
第9章将讨论不同格式的数据转换,以及不同数据源的提供者。同时,本章将采用自定义管理命令实现数据导入,并通过站点图、RSS和REST API实现数据导出。
第10章将展示一些额外的代码片段和技巧,这对于日常的Web开发和调试十分有用。
第11章将引入不同的测试类型,并提供多个特征示例用以测试项目代码。
第12章将处理针对Python Package Index的第三方应用程序部署,以及专用服务器的Django项目部署。
第13章将解释如何创建数据库备份、为常规任务设置计划作业,以及如何生成日志事件以供进一步查看。
本书资源
采用Django 3.0实现本书示例时,需要安装下列内容:
? Python 3.6或更高版本。
? 操控图像的Pillow库。
? MySQL数据库和mysqlclient绑定库,或者基于psycopg2-binary绑定库的PostgreSQL数据库。
? Docker Desktop或Docker Toolbox用以实现完整系统虚拟化效果,或者一个内建的虚拟环境,以使每个项目的Python模块处于分离状态。
? 针对版本控制的Git。
本书所涉及的软件和硬件如表1所示。
表1
软件和硬件 操 作 系 统
Python 3.6 或更高版本
Django 3.0.X
PostgreSQL 11.4或更高版本/MySQL 5.6或更高版本 最新的基于UNIX的操作系统,如macOS或Linux(也有可能在Windows操作系统上进行开发)
除此之外,其他的特定需求将在每个示例中单独提到。
读者可采用任何代码编辑器编辑项目文件,但这里推荐使用PyCharm(https://www. jetbrains.com/pycharm/)或Visual Studio Code(https://code.visualstudio.com/)。
注意:
全部代码示例均通过Django 3.0测试,且应可与Django的后续版本协同工作。
下载示例代码文件
读者可通过www.packt.com账户下载本书的示例代码文件。如果读者购买了本书,则可访问www.packtpub.com/support并注册,我们将把相关文件通过电子邮件直接发送于您。
下列步骤展示了代码文件的下载过程。
? 登录www.packt.com并注册。
? 选择Support选项卡。
? 单击Code Downloads按钮。
? 在搜索框中输入本书名称,并遵循相应的指令。
待文件下载完毕后,确保利用下列软件的最新版本解压或析取文件夹。
? WinRAR/7-Zip(Windows环境)。
? Zipeg/iZip/UnRarX(Mac环境)。
? 7-Zip/PeaZip(Linux环境)。
除此之外,本书的代码包还托管于GitHub上,对应网址为https://github.com/ PacktPublishing/Django-3-Web-Development-Cookbook-Fourth-Edition,且代码将与已有的GitHub储存库同步更新。
另外,读者还可访问https://github.com/PacktPublishing/查看其他图书的代码包、丰富的资源分类和视频内容。
本书惯例
本书涵盖了以下文本惯例。
代码块如下所示。
# requirements/dev.txt
-r _base.txt
coverage
django-debug-toolbar
selenium
需要强调的特定代码采用粗体表示,如下所示。
class Idea(CreationModificationDateBase, MetaTagsBase, UrlBase):
title = models.CharField(
_("Title"),
max_length=200,
)
content = models.TextField(
_("Content"),
)
命令行输入或输出内容如下所示。
(env)$ pip install -r requirements/dev.txt
图标表示警告或重要事项。
图标表示提示或操作技巧。
读者反馈和客户支持
欢迎读者对本书提出建议或意见并予以反馈。
对此,读者可向customercare@packtpub.com发送邮件,并以书名作为邮件标题。
勘误表
尽管我们希望本书做到尽善尽美,但疏漏依然在所难免。如果读者发现谬误,无论是文字错误抑或是代码错误,还望不吝赐教。对此,读者可访问http://www.packtpub.com/ submit-errata,选取对应书籍,输入并提交相关问题的详细内容。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知我们网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问authors.packtpub.com。
问题解答
读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为您服务。