《Django3.0应用开发详解》李向军|(epub+azw3+mobi+pdf)电子书下载
图书名称:《Django3.0应用开发详解》
- 【作 者】李向军
- 【丛书名】Web开发技术丛书
- 【页 数】 308
- 【出版社】 北京:机械工业出版社 , 2021.10
- 【ISBN号】978-7-111-69090-0
- 【分 类】软件工具-程序设计
- 【参考文献】 李向军. Django3.0应用开发详解. 北京:机械工业出版社, 2021.10.
图书封面:
图书目录:
《Django3.0应用开发详解》内容提要:
全书共15章。首先概述Django3的特性,然后介绍Django环境搭建情况以及默认情况下的工程内容,阐述了Django的各类管理命令及其用法,Django路由调用的各项使用方式,模型的属性、类型、关联模型类型以及模型元数据,Django的请求响应机制、CBV概念、模板的定义及模板变量的使用,紧接着介绍系统模板标签、系统模板过滤器、数据库相关内容、常用中间件、管理应用模块的主要对象以及相关的自定义设置形式。z后说明部署以及发布流程并列举了Django使用中发生的一些常见问题。
《Django3.0应用开发详解》内容试读
:
短道道围新范的世增后可世量简短道留留增圆备量
第1章Choler 1
Django简介
作为本书的第1章,将简略介绍Django的来历及特点,并详细介绍Django3.0的一些新特性,为后面的学习打下基础。
1.1什么是Django
Django是Python编程语言驱动的一个基于MVC风格的Web应用程序框架,最初是被开发用于管理劳伦斯出版集团(Lawrence Journal World)旗下的一些以新闻内容为主的网站的;2005年7月,该框架在GitHub站点以BSD许可证形式发布。
Djange0于2012年3月8日发布1.0版本,2017年12月2日发布2.0版本,2019年12月2日发布3.0版本,目前最新的版本为2020年8月4日发布的3.1版本
由于该程序框架是基于Python开发的,因此Django版本与Python版本之间有很强的关联,具体见表1-1。
表1-1 Django与Python版本之间的关联
Django版本
Python版本
1.0
至少2.3
1.2
至少2.4
1.3
至少2.5
1.11
2.7、3.4、3.5、3.6、3.7
2.0
3.4、3.5、3.6、3.7
3.0、3.1
3.6、3.7、3.8
2,Django3.0应用开发详解
1.2 Django与其他Web框架的对比
目前,运用Python作网站开发的Web框架很多,主要有Django、Flask与Tornado。下面我们对这三种框架进行简要的对比(见表1-2)。
表1-2 Django、Flask与Tornado的对比
框架名称
比较内容
Django
Flask
Tornado
最早发布时间
2005年11月4日
2010年4月16日
2010年7月23日
开源协议
BSD-3-Clause
BSD-3-Clause
Apache-2.0
框架体量
大和全,自带ORM、temp
除了核心模块和Jinja2模板以外
除了核心模块,'没有其
late、view,为重量级框架
没有其他模块,为轻量级框架
他模块,为轻量级框架
模块之间耦合程度高,几
扩展性
乎不可能组配其他外部功能模
作为微型框架,它可以自由组配
块,但是可以增加并丰富它的
可扩展外部功能模块
外部功能模块
Middlerware/contrib适合新手,适合一般网站
适用性
对新手来说不好控制,适合能力
与Flask类似
快速开发
强的开发团队开发
如果考虑安全性,对于
需要熟悉各种外部功能模块,在
开发效率
般网站,它的开发效率是非常使用初期开发效率比较低,后期会
介于Flask、Django之间
高的
有所提高
ORM及模板处理速度相对
处理性能
ORM采用SQLAlchemy,性能较
较慢
强
与Flask类似
1.3
Django3.0的新特性
Django3.0沿用了Django2.0诸多特性,但也对一些方面进行了适当的调整,形成了
3.0版本独有的特性。Django3.0与Django2.0的不同之处主要在于以下十几个方面。
1.Python兼容性
Django3.0与Django3.1支持Python3.6、Python3.7与Python3.8,Django2.2.x会是最后一个支持Python3.5及更早版本的系列。对于第三方Django应用,官方建议应用开发者放弃对Django2.2及更早版本的支持。
2.ASGl的支持
新增对ASGI的支持,让Django逐渐支持异步功能。这是Django对现有Web服务器网关接口(Python Web Server Gatway Interface,WSGI)模式支持的补充。
3.数据库支持
支持使用MariaDB10.1或更高版本的数据库。不再支持PostgreSQL9.4版本,只支持
PostgreSQL9.5及以上版本。2021年不再支持Oracle12.1版本,只支持Oracle12.2及以上
第1章Django简介3
版本。
4.PostgreSQL的排斥约束
增加了类django..contrib.postgres.constraints.ExclusionConstraint,用来在数据库PostgreSQL上添加排除约束。使用Meta.constraints选项将定义的约束添加到模型。
5.过滤器表达式
表达式输出结果为BooleanField类型的值,可以直接在QuerySet过滤器中使用,而不必先注释,再针对注释进行过滤。
6.用于选择字段的枚举类
增加了模型关联的类TextChoices、IntegerChoices和Choices,这些类可用于定义Field.choices。.其中为文本和整数字段提供了TextChoices类型和IntegerChoices类型。在Choices类允许定义为其他具体的数据类型兼容的枚举。
7.缓存控制
在缓存控制方法patch cache control()中增加private标识的判断逻辑,该方法被addnever cache headers调用。在缓存控制方法patch cache control()中增加no-cache标识的判断逻辑,该方法被cache control调用(Django3.l新增功能)。
8.文件存储管理
提供了django..core.files.storage..Storage.get alternative name(0方法,用来根据已有文件名随机生成一个新文件名称。在一定程度上避免因多次上传同名文件而带来的存储影响。django.core.files.storage.FileSystemStorage的save()方法采用pathlib.Path类的路径解析(Django3.1新增功能)。
9.表单管理
表单管理是Django使用Forms的重要形式,在Django3.0中有如下调整:
口在表单的基础类中添加了can order属性,该属性默认为False;当该属性为True时,可在表单页面中增加排序属性。默认情况下排序属性以数值形式体现,用户可通过修改属性ordering widget或重写基类方法get ordering widget()来改变页面中排序属性的显示形式。
口调整类django.forms.ModelChoicelterator的choice(方法,使该方法以django.forms.
ModelChoicelterator Value实例形式返回。类django.forms.ModelChoicelterator用于表单字段ModelChoiceField和ModelMultipleChoiceField(Django3.l新增功能)。口表单字段DateTimeField(django.forms.DateTimeField)支持ISO8601时间格式传递,
接收配置节点DATE INPUT FORMATS与DATETIME INPUT FORMATS的信息
并将字段信息转换为时间值(Django3.1新增功能)。
口调整类django.forms.MultiWidget的初始传入参数widgets,使该参数可传递自定义的
4 Django3.0应用开发详解
subwidget字典信息(Django3.1新增功能)。调整类django.forms.BoundField,增加属性widget type,用于根据属性值动态调整表单显示信息(Django3.1新增功能)。
10.语言国际化
在语言国际化使用方面,Django3.0有如下调整:
口增加配置节点LANGUAGE COOKIE HTTPONLY,用来为语言cookie设置Http-
Only标志,该节点默认为False。当设置为True时,客户端JavaScript脚本将被禁止访问语言cookie。
口增加配置节点LANGUAGE COOKIE SAMESITE,用来为语言cookie设置Same
Site标志,该节点默认为None(Django3.l新增功能),表示语言cookie可被跨站点请求发送
口增加配置节点LANGUAGE COOKIE SECURE,用来为语言cookie增加安全访问控制,该节点默认为False。当设置为True时,标识只有在HTTPS连接时才会发送语言cookie.
口添加了对乌兹别克语、阿尔及利亚阿拉伯语、伊博语、吉尔吉斯语、塔吉克语、土库曼语的支持和翻译(Django3.1新增功能)。
11.日志管理
为类django.utils.log.AdminEmailHandler增加属性reporter class,该属性值为djangoviews..debug.ExceptionReporter子类的名称标识信息,该属性值用来自定义错误回溯格式。设置了此属性后,当配置节点Debug设置为False,Admin站点发生异常时,将按照自定义错误回溯格式向页面反馈信息
12.针对诸多管理命令进行的调整
对于框架管理命令,Django3.0做了如下调整:
口调整了命令的使用方式。调整了命令showmigrations,使该命令在参数verbosity值为2或3时,使用参数list将会显示应用时间信息;命令dbshell增加了对
PostgreSQL数据库的客户端TLS证书的支持;命令inspectdb会在字段外键存在唯一性或者受主键约束时,对类型为OneToOneField进行自我核查;命令startapp与startproject的template参数支持存放形式为XZ的档案(.tar.xz、.txz)和形式为LZMA的档案(.tar.lzma、.tlz)。
口增加了命令的参数。为命令compilemessages增加了参数ignore,.用于忽略对指定文件夹扫描编译文件:为命令check增加了参数database,用于指定数据库别名进行数据库检测(Diango3.1新增功能);为命令migrate增加了参数check,用于在数据迁移时检测是否存在未应用的迁移脚本,如果存在,则退出生成数据库对象(Django
3.1新增功能);为命令check增加了特别参数判断,以“-”分隔符作为判断依据,可根据不同数据库客户端设置不同的连接参数(Diango3.1新增功能);增加了所有
第1章Django简介5
命令的通用参数skip-checks,用来跳过运行命令之前正在运行的系统检查。
口为通用命令异常类django.core.management..CommandError增加初始化参数returncode,该参数用于自定义命令的退出状态(Django3.1新增功能)。
13.模型扩展
对于模型的使用,Django3.0做了如下调整:
口增加了各类函数。增加了MD5函数,用于将文本类型字段或表达式转换为基于
MD5的散列字符串:增加了SHA1函数,用于将文本类型字段或表达式转换为基于
SHA1的散列字符串:增加了SHA224函数,用于将文本类型字段或表达式转换为基
于SHA224的散列字符串,需要注意的是,该函数不适用于Oracle数据库;增加了
SHA256函数,用于将文本类型字段或表达式转换为基于SHA256的散列字符串;增
加了SHA384函数,用于将文本类型字段或表达式转换为基于SHA384的散列字符
串;增加了SHA512函数,用于将文本类型字段或表达式转换为基于SHA512的散
列字符串:增加了Sign函数,用于以(-1,0,1)形式返回数值类型字段或表达式的符号;为模型基础类django.db.backends..base.BaseDatabaseFeatures增加了方法allowsgroup_by_.selected_pks_on_model(),该方法允许对子句进行优化,默认情况下,该方法仅适用于PostgreSQL数据库;增加了字段类型JSONField,用于json字符串的编码与解码(Django3.1新增功能):新增时间方法Extractlso WeekDay,用ISO-8601标准提取DateField和DateTimeField类型数据的星期值(Django3.l新增功能);新增查询方法iso week day(),该方法可在查询结果集中按照ISO-8601形式返回星期值(Django3.1新增功能);为类django.db.models.Combinable增加方法bitxor()用于位的异或操作,该类被django.db.models.F、django.db.models.Expression继承。口增加了函数参数。为函数Trunc增加了is dst参数,用来设置不存在和不明确的日期时间的处理方式;增加了使用connection.queries时的输出结果,当使用
PostgreSQL数据库时,可以根据调用情况显示类似“COPY xx TO xxx”的SQL脚本信息;为类django.db.models.query.QuerySet的datetimes(O方法增加了参数is dst,用于处理传递不存在或模糊的时间信息(Django3.1新增功能)。
口增加了字段。增加了字段类型PositiveBigIntegerField,它的行为与字段类型
PositivelntegerField类似,其取值范围为0~9223372036854775807(Django3.1新增功能)。增加了字段类型SmallAutoField,它的行为与字段类型AutoField类似,其取值范围为1~32767。
口调整了字段。调整了模型字段FilePathField,使该字段的参数path可接受方法的返回值;将具有对称性的中间表用于模型字段ManyToManyField的自引用;增加模型CheckConstraint、UniqueConstraint和Index的参数使用控制,允许参数name使用以%(app_label)s'和%(class)s'占位符形式体现的字符串;为模型字段基类Field
6 Django3.0应用开发详解
增加属性descriptor class,用来形成描述信息;模型统计函数Avg与Sum允许对带有distinct行为的数据集合进行统计;调整字段类型BigAutoField的继承父类为
BigIntegerField,调整字段类型SmallAutoField的继承父类为SmallIntegerField;为字段类型FileField增加属性upload to,该属性可用于保存文件的路径信息,并可用于pathlib.Path类的实例传递。调整模型字段FileField(作为继承类,ImageField也受影响)的初始参数storage,使该参数接收可调用方法,便于动态调整storage(Django3.1新增功能)。
在字段方面,Django3.1版本中又新增了如下功能。
口增加了模型的CheckConstraint参数check使用控制,允许使用布尔表达式形式作为传人参数。
口增加了模型的UniqueConstraint参数deferrable使用控制,允许创建延迟性唯一性约束。
口为模型字段OneToOneField以及外键字段ForeignKey的on delete参数增加了RESTRICT选项值,用户可在删除该类字段数据时,根据需要选择model..CASCADE、model..PROTECT与model..RESTRICT。
14.请求响应
对于页面的请求响应处理,Django3.0做了如下调整:
口调整了请求相应的传递信息。为HttpResponse的传递内容信息增加了memoryview格式,用于返回。调整HttpRequest..headers的传递信息,允许以下划线和连字符两种形式查找相关关键字,这两种查询内容一致,例如查询user agent与user-agent,最后查询的都是user-agent.
口调整了请求相应的调用方法。调整了类django.http.HttpResponse中的方法set cookie()与set_signed_cookie(),设置参数samesite默认值为None,用来表示cookie可被用于跨站请求,可根据需要禁止(Django3.1新增功能)。为类django..htp.Http
Response增加方法accepts(),用来根据Accept标头信息接收相关类型的内容(Django
3.1新增功能)。
15.安全管理
在安全管理方面,Django3.0做了如下调整:
口调整配置节点X FRAME OPTIONS的默认值为“DENY”。
口调整配置节点SECURE CONTENT TYPE NOSNIFF的默认值为“True”,当该值为“True”时,安全中间件SecurityMiddleware将为Web响应设置X-Content--Type
Options:nosniff标头信息。
口调整配置节点SECURE REFERRER POLICY的默认值为“same-origin”,当该值为“same-origin”时,安全中间件SecurityMiddleware将设置Referrer Policy标头信息
···试读结束···
作者:花小芳
链接:https://www.58edu.cc/article/1657933988037152770.html
文章版权归作者所有,58edu信息发布平台,仅提供信息存储空间服务,接受投稿是出于传递更多信息、供广大网友交流学习之目的。如有侵权。联系站长删除。