《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标头信息
···试读结束···