Django2.1 更新说明!
Django2.1版本发布时间:2018-8-1
一、Python兼容性
Django2.1只支持Python 3.5、 3.6和3.7以上版本。Django2.0是最后一个支持Python3.4及一下版本的发行版。因此,按照Django官方的尿性,要使用最新版本的Django,请使用最新版本的Python比较稳妥。
二、新特性
1. ‘view’视图模型权限
Meta.default_permissions
新增一个‘view’权限。当你运行migrate命令时,该权限会自动创建。这可以让admin的访问者只具有读的权限,而没有修改权限,对应的判断方法是ModelAdmin.has_view_permission()
。此功能向后兼容,通常情况下你无需特别关心。
2. 小功能
Django.contrib.admin后台站点
ModelAdmin.search_fields
现在可以使用field__exact
匹配- jQuery从2.2.3升级到3.3.1版本
ModelAdmin.delete_queryset()
现在可以自定义删除过程- 现在开始可以重写整个admin站点
ModelAdmin.list_display
中元素的admin_order_field
属性现在可以是一个查询表达式- 新的
ModelAdmin.sortable_by
属性和ModelAdmin.get_sortable_by()
方法可以限制能够排序的列 ModelAdmin.get_deleted_objects()
方法现在允许自定义删除过程actions.html
、change_list_results.html
、date_hierarchy.html
、pagination.html
、prepopulated_fields_js.html
、search_form.html
、submit_line.html
模板可以在任何app或者模型中被改写。- 现在使用
change_list_object_tools.html
、change_form_object_tools.html
模板可以在每个app或模型中单独重写admin的修改列表以及修改表单对象工具 InlineModelAdmin.has_add_permission()
方法现在将父亲对象obj作为第二个位置参数传入- admin动作现在可以设置权限。
django.contrib.auth认证与授权
createsuperuser
命令现在会弹出提示,用于绕过AUTH_PASSWORD_VALIDATORS
的检查- 当自定义user模型时,
UserCreationForm
和UserChangeForm
不再需要重写
django.contrib.sessions
- 新增
SESSION_COOKIE_SAMESITE
标识
Cache缓存
- 基于本地内存的缓存后端将使用LRU策略,而不是伪随机策略
- 新增touch()方法用于更新缓存键的失效时间
CSRF跨站请求伪造
- 新增
CSRF_COOKIE_SAMESITE
属性
Forms表单
- ImageField将增加
accept="image/*"
HTML属性
Internationalization国际化
- 新增
get_supported_language_variant()
方法
Management Commands管理命令
- 新增
inspectdb --include-views
选项 BaseCommand
类现在使用自定义的帮助格式化器
Migrations数据库迁移
- 支持序列化
functools.partialmethod
对象 - 为了支持环境固化,migrations迁移可能从
.pyc
文件加载
Models模型
- 现在支持
__init_subclass__()
- BinaryField类型现在可以设置
editable=True
,如果你想将它用在模型表单中 - 新增了一系列文本数据库函数:
Chr, Left, LPad, LTrim, Ord, Repeat, Replace, Right, RPad, RTrim, and Trim
- 新增TruncWeek方法,用于截断DateField和DateTimeField的周一那一天
- 现在,使用负号可以中止某个查询表达式起作用
QuerySet.order_by()
和distinct(*fields)
现在支持字段转换- BooleanField布尔值段现在可以设置
null=True
。这用于替换即将被废弃的NullBooleanField字段类型 - 新增
QuerySet.explain()
方法用于显示数据库的查询过程 QuerySet.raw()
开始支持prefetch_related()
Requests and Responses请求和响应
- 新增
HttpRequest.get_full_path_info()
方法 - 为
HttpResponse.set_cookie()
方法新增samesite
参数,用于设置SameSite
这个cookie标识
Templates模板
- 新增
json_script
过滤器,用于安全的输出Python的JSON对象
Tests测试
- 新增支持307和308重定向的测试代理
- 测试代理现在序列化请求数据字典成JSON格式,如果你设置
content_type='application/json'
- 新的
SimpleTestCase.assertWarnsMessage()
方法是assertWarnsRegex()
方法的简化版本
三、2.1版本向后不兼容
Database backend API数据库后端API
NotImplementedError
异常现在被改为django.db.NotSupportedError
,用于提示数据库不支持的功能allow_sliced_subqueries
更名为allow_sliced_subqueries_with_in
DatabaseOperations.distinct_sql()
方法新增一个params参数,并返回一个包含SQL和parameters的元组DatabaseFeatures.introspected_boolean_field_type
从方法变成属性
django.contrib.gis
- 不再支持SpatiaLite 4.0
不支持的数据库版本
- 不再支持MySQL 5.5,需要5.6或更高版本!!(重要)
- 不再支持PostgreSQL 9.3,需要9.4以上版本
- 最低支持mysqlclient 1.3.7,不再是1.3.3
- 不再支持SQLite 3.7.15以下版本
migrations
- 由于现在migrations从
.pyc
文件加载,所以在Python2和Python3混合使用的环境下,你可能需要手动删除它们
(更多细节不赘述)
四、2.1中被废弃的功能
以下将被废弃
ForceRHR
地理函数django.utils.http.cookie_date()
{% load staticfiles %}
和{% load admin_static %}
将被废弃,请使用{% load static %}
django.contrib.staticfiles.templatetags.static()
将被废弃,请使用django.templatetags.static.static()
五、2.1中移除的功能
- 移除
contrib.auth.views.login()
、logout()
、password_change()
、password_change_done()
、password_reset()
、password_reset_done()
、password_reset_confirm()
、password_reset_complete()
(更多细节不赘述)
Django发行历史:
版本路线图
发行计划表
转自:http://www.liujiangblog.com/blog/34/
Django2.1 更新说明!的更多相关文章
- Django2.1更新日志
前两天本来想把2.1的release note做个中文摘要,后来发现没什么大的改动. 不过更新以后还是发下一个bug,或者是已经feature本身的改动,就是QueryDict这个类的实例不能再往里放 ...
- Django2中文文档--目录及介绍部分
Django2文档-文档结构 我是按照官方文档的格式进行翻译,所以格式根官方格式一致 如果大家发现哪些地方有问题可以联系我 2426525089@qq.com 或者加入QQ群跟我一起翻译,群号码: 2 ...
- python3+django2 开发易语言网络验证(上)
创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...
- Django2.1.2创建默认管理后台
1.在app的models.py中添加以下代码: from django.db import models # Create your models here. # Register your mod ...
- Django2.1,Xadmin2.0下的问题记录
此篇博文长期更新…… 环境: Ubuntu18.04, Python3.6, Django2.1, Xadmin2.0 1. Xadmin添加用户小组件时报错:xadmin render() got ...
- django——面试题(已工作,暂停更新)
谈谈你对HTTP协议的认识. 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准. 什么是http协议? http协议,是互联网中最常见的网络通信标准. http协议的特点 ① ...
- 我的django2
1.做双系统(不现实启动项就再做一遍) 2.更新源 3.下载软件 看ubuntu篇,一直到mysql安装完. 4. 第一部分 搭建本地虚拟环境 第二部分 编辑 @部署??: 服务器端安装pip3,dj ...
- Python 3之Django2部署(centos7+nginx+python3+django2.0)
前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://dow ...
- Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)
1.开发环境配置 Windows7 64位旗舰版 python3.6 node.js mysql navicat pycharm webstorm或vscode 2.项目初始化 新版的pycharm很 ...
随机推荐
- Yii2中indexBy()的使用
在项目开发中经常会使用到一些特殊的值作为数组的索引,一般可以先查询出数据后数组循环拼接成所需的格式.不过YII2框架提供了一种更简单的方法indexBy(). 参考Yii文档:https://www. ...
- Linux创建Jenkins启动脚本以及开机启动服务
1.jenkins.sh #!/bin/bash ###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限 JAVA_HOME=/usr/lib/jdk1.8.0 ...
- ES6-Proxy,代理
proxy 代理 Es6 增强 对象和函数(方法) Proxy用于修改某些操作的默认行为,即对编程语言层面进行修改,属于“元编程”, Proxy意思为“代理”,即在访问对象之前建立一道“拦截”,任 ...
- Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'me
在启动RabbitMQ消费端的时候报错:Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol ...
- Oracle处理关于sysaux表空间爆满的问题---更新最新方法!!
对于SYSAUX表空间而言,如果占用过大,那么一般情况下是由于AWR信息或对象统计信息没有及时清理引起的,具体原因可以通过如下的SQL语句查询: SELECT OCCUPANT_NAME ORDER ...
- sql server数据库查询取出重复数据记录
问题:博主在2011年6月,广东技术师范大学大四的时候,从学校计算机科学学院网站看到招聘信息并到广东中原地产IT部面试,很清楚记得当时的面试题目:怎么从数据库里面查询重复记录. 解决方案:在sql s ...
- 你真的理解Java 注解吗?
你真的理解Java 注解吗? 1.什么是注解? 官方解释: Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.Java ...
- qt 自定义控件窗口提升
- vue_04day 路由初始
目录 vue_04 项目初始: vue 文件构造: vue项目目录结构: 项目入口(main.js): vue项目启动生命周期: 根组件(vue.js): router.js: 创建的页面: 全局样式 ...
- [译]Vulkan教程(25)描述符布局和buffer
[译]Vulkan教程(25)描述符布局和buffer Descriptor layout and buffer 描述符布局和buffer Introduction 入门 We're now able ...