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匹配@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.htmlchange_list_results.htmldate_hierarchy.htmlpagination.htmlprepopulated_fields_js.html、 search_form.htmlsubmit_line.html模板可以在任何app或者模型中被改写。@H_502_26@
  • 现在使用change_list_object_tools.htmlchange_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模型时,UserCreationFormUserChangeForm不再需要重写@H_502_26@

django.contrib.sessions

  • 新增SESSION_COOKIE_SAMESITE标识@H_502_26@

Cache缓存

  • 基于本地内存的缓存后端将使用LRU策略,而不是伪随机策略@H_502_26@
  • 新增touch()方法用于更新缓存键的失效时间@H_502_26@

CSRF跨站请求伪造

Forms表单

Internationalization国际化

  • 新增get_supported_language_variant()方法@H_502_26@

Management Commands管理命令

  • 新增inspectdb --include-views选项@H_502_26@
  • BaseCommand类现在使用自定义的帮助格式化器@H_502_26@
@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模板

  • 新增json_script过滤器,用于安全的输出Python的JSON对象@H_502_26@

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

django.contrib.gis

不支持数据库版本

migrations

  • 由于现在migrations从.pyc文件加载,所以在Python2和python3混合使用的环境下,你可能需要手动删除它们@H_502_26@

(更多细节不赘述)

四、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发行历史:

Django发行历史.png-112.4kB

版本路线图

image.png-46.8kB

发行计划表

Django发行计划.png-55.2kB

转自:http://www.liujiangblog.com/blog/34/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐