Django2.1只支持Python 3.5、 3.6和3.7以上版本。Django2.0是最后一个支持Python3.4及一下版本的发行版。因此,按照Django官方的尿性,要使用最新版本的Django,请使用最新版本的Python比较稳妥。
Meta.default_permissions
新增一个‘view’权限。当你运行migrate命令时,该权限会自动创建。这可以让admin的访问者只具有读的权限,而没有修改权限,对应的判断方法是ModelAdmin.has_view_permission()
。此功能向后兼容,通常情况下你无需特别关心。
ModelAdmin.search_fields
现在可以使用field__exact
匹配ModelAdmin.delete_queryset()
现在可以自定义删除过程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作为第二个位置参数传入createsuperuser
命令现在会弹出提示,用于绕过AUTH_PASSWORD_VALIDATORS
的检查UserCreationForm
和UserChangeForm
不再需要重写SESSION_COOKIE_SAMESITE
标识CSRF_COOKIE_SAMESITE
属性accept="image/*"
HTML属性get_supported_language_variant()
方法inspectdb --include-views
选项BaseCommand
类现在使用自定义的帮助格式化器functools.partialmethod
对象.pyc
文件加载__init_subclass__()
editable=True
,如果你想将它用在模型表单中Chr, Left, LPad, LTrim, Ord, Repeat, Replace, Right, RPad, RTrim, and Trim
QuerySet.order_by()
和distinct(*fields)
现在支持字段转换null=True
。这用于替换即将被废弃的NullBooleanField字段类型QuerySet.explain()
方法用于显示数据库的查询过程QuerySet.raw()
开始支持prefetch_related()
HttpRequest.get_full_path_info()
方法HttpResponse.set_cookie()
方法新增samesite
参数,用于设置SameSite
这个cookie标识json_script
过滤器,用于安全的输出Python的JSON对象content_type='application/json'
SimpleTestCase.assertWarnsMessage()
方法是assertWarnsRegex()
方法的简化版本NotImplementedError
异常现在被改为django.db.NotSupportedError
,用于提示数据库不支持的功能allow_sliced_subqueries
更名为allow_sliced_subqueries_with_in
DatabaseOperations.distinct_sql()
方法新增一个params参数,并返回一个包含SQL和parameters的元组DatabaseFeatures.introspected_boolean_field_type
从方法变成属性.pyc
文件加载,所以在Python2和Python3混合使用的环境下,你可能需要手动删除它们(更多细节不赘述)
以下将被废弃
ForceRHR
地理函数django.utils.http.cookie_date()
{% load staticfiles %}
和{% load admin_static %}
将被废弃,请使用{% load static %}
django.contrib.staticfiles.templatetags.static()
将被废弃,请使用django.templatetags.static.static()
contrib.auth.views.login()
、logout()
、password_change()
、
password_change_done()
、password_reset()
、password_reset_done()
、
password_reset_confirm()
、password_reset_complete()
(更多细节不赘述)
很好的教材。