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
匹配@H_502_26@ - jQuery从2.2.3升级到3.3.1版本@H_502_26@
-
ModelAdmin.delete_queryset()
现在可以自定义删除过程@H_502_26@ - 现在开始可以重写整个admin站点@H_502_26@
-
ModelAdmin.list_display
中元素的admin_order_field
属性现在可以是一个查询表达式@H_502_26@ - 新的
ModelAdmin.sortable_by
属性和ModelAdmin.get_sortable_by()
方法可以限制能够排序的列@H_502_26@ -
ModelAdmin.get_deleted_objects()
方法现在允许自定义删除过程@H_502_26@ -
actions.html
、change_list_results.html
、date_hierarchy.html
、pagination.html
、prepopulated_fields_js.html
、search_form.html
、submit_line.html
模板可以在任何app或者模型中被改写。@H_502_26@ - 现在使用
change_list_object_tools.html
、change_form_object_tools.html
模板可以在每个app或模型中单独重写admin的修改列表以及修改表单对象工具@H_502_26@ -
InlineModelAdmin.has_add_permission()
方法现在将父亲对象obj作为第二个位置参数传入@H_502_26@ - admin动作现在可以设置权限。@H_502_26@
django.contrib.auth认证与授权
-
createsuperuser
命令现在会弹出提示,用于绕过AUTH_PASSWORD_VALIDATORS
的检查@H_502_26@ - 当自定义user模型时,
UserCreationForm
和UserChangeForm
不再需要重写@H_502_26@
django.contrib.sessions
- 新增
SESSION_COOKIE_SAMESITE
标识@H_502_26@
Cache缓存
CSRF跨站请求伪造
Forms表单
Internationalization国际化
Management Commands管理命令
@H_404_148@Migrations数据库迁移Models模型
- 现在支持
__init_subclass__()
@H_502_26@ - BinaryField类型现在可以设置
editable=True
,如果你想将它用在模型表单中@H_502_26@ - 新增了一系列文本数据库函数:
Chr,Left,LPad,LTrim,Ord,Repeat,Replace,Right,RPad,RTrim,and Trim
@H_502_26@ - 新增TruncWeek方法,用于截断DateField和DateTimeField的周一那一天@H_502_26@
- 现在,使用负号可以中止某个查询表达式起作用@H_502_26@
-
QuerySet.order_by()
和distinct(*fields)
现在支持字段转换@H_502_26@ - BooleanField布尔值段现在可以设置
null=True
。这用于替换即将被废弃的NullBooleanField字段类型@H_502_26@ - 新增
QuerySet.explain()
方法用于显示数据库的查询过程@H_502_26@ -
QuerySet.raw()
开始支持prefetch_related()
@H_502_26@
Requests and Responses请求和响应
- 新增
HttpRequest.get_full_path_info()
方法@H_502_26@ - 为
HttpResponse.set_cookie()
方法新增samesite
参数,用于设置SameSite
这个cookie标识@H_502_26@
Templates模板
Tests测试
- 新增支持307和308重定向的测试代理@H_502_26@
- 测试代理现在序列化请求数据字典成JSON格式,如果你设置
content_type='application/json'
@H_502_26@ - 新的
SimpleTestCase.assertWarnsMessage()
方法是assertWarnsRegex()
方法的简化版本@H_502_26@
三、2.1版本向后不兼容
Database backend API数据库后端API
-
NotImplementedError
异常现在被改为django.db.NotSupportedError
,用于提示数据库不支持的功能@H_502_26@ -
allow_sliced_subqueries
更名为allow_sliced_subqueries_with_in
@H_502_26@ -
DatabaSEOperations.distinct_sql()
方法新增一个params参数,并返回一个包含sql和parameters的元组@H_502_26@ -
DatabaseFeatures.introspected_boolean_field_type
从方法变成属性@H_502_26@
django.contrib.gis
不支持的数据库版本
- 不再支持MysqL 5.5,需要5.6或更高版本!!(重要)@H_502_26@
- 不再支持Postgresql 9.3,需要9.4以上版本@H_502_26@
- 最低支持MysqLclient 1.3.7,不再是1.3.3@H_502_26@
- 不再支持sqlite 3.7.15以下版本@H_502_26@
migrations
(更多细节不赘述)
四、2.1中被废弃的功能
以下将被废弃
-
ForceRHR
地理函数@H_502_26@ django.utils.http.cookie_date()
@H_502_26@-
{% load staticfiles %}
和{% load admin_static %}
将被废弃,请使用{% load static %}
@H_502_26@ -
django.contrib.staticfiles.templatetags.static()
将被废弃,请使用django.templatetags.static.static()
@H_502_26@
五、2.1中移除的功能
- 移除
contrib.auth.views.login()
、logout()
、password_change()
、password_change_done()
、password_reset()
、password_reset_done()
、password_reset_confirm()
、password_reset_complete()
@H_502_26@
(更多细节不赘述)
Django发行历史:
版本路线图
发行计划表
转自:http://www.liujiangblog.com/blog/34/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。