Django2.1 版本更新说明及演示


发布时间:2019-02-22 04:32    作者: Uncle Hui   已过去:1 年,1 月   阅读总量:293 已被赞:0


Django2.1版本发布时间:

2018-8-1
一、Python兼容性
Django2.1仅支持Python 3.5、 3.6和3.7以上版本。

Django2.0是最后一个支持Python3.4及一下版本的发行版。

二、django2.1+新特性
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()

点赞

0




登陆后方可评论