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.htmlchange_list_results.htmldate_hierarchy.htmlpagination.htmlprepopulated_fields_js.html、 search_form.htmlsubmit_line.html模板可以在任何app或者模型中被改写。
  • 现在使用change_list_object_tools.htmlchange_form_object_tools.html模板可以在每个app或模型中单独重写admin的修改列表以及修改表单对象工具
  • InlineModelAdmin.has_add_permission()方法现在将父亲对象obj作为第二个位置参数传入
  • admin动作现在可以设置权限。

django.contrib.auth认证与授权

  • createsuperuser命令现在会弹出提示,用于绕过AUTH_PASSWORD_VALIDATORS的检查
  • 当自定义user模型时,UserCreationFormUserChangeForm不再需要重写

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 更新说明!的更多相关文章

  1. Django2.1更新日志

    前两天本来想把2.1的release note做个中文摘要,后来发现没什么大的改动. 不过更新以后还是发下一个bug,或者是已经feature本身的改动,就是QueryDict这个类的实例不能再往里放 ...

  2. Django2中文文档--目录及介绍部分

    Django2文档-文档结构 我是按照官方文档的格式进行翻译,所以格式根官方格式一致 如果大家发现哪些地方有问题可以联系我 2426525089@qq.com 或者加入QQ群跟我一起翻译,群号码: 2 ...

  3. python3+django2 开发易语言网络验证(上)

    创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...

  4. Django2.1.2创建默认管理后台

    1.在app的models.py中添加以下代码: from django.db import models # Create your models here. # Register your mod ...

  5. Django2.1,Xadmin2.0下的问题记录

    此篇博文长期更新…… 环境: Ubuntu18.04, Python3.6, Django2.1, Xadmin2.0 1. Xadmin添加用户小组件时报错:xadmin render() got ...

  6. django——面试题(已工作,暂停更新)

    谈谈你对HTTP协议的认识. 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准. 什么是http协议? http协议,是互联网中最常见的网络通信标准. http协议的特点 ① ...

  7. 我的django2

    1.做双系统(不现实启动项就再做一遍) 2.更新源 3.下载软件 看ubuntu篇,一直到mysql安装完. 4. 第一部分 搭建本地虚拟环境 第二部分 编辑 @部署??: 服务器端安装pip3,dj ...

  8. Python 3之Django2部署(centos7+nginx+python3+django2.0)

    前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://dow ...

  9. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(1)

    1.开发环境配置 Windows7 64位旗舰版 python3.6 node.js mysql navicat pycharm webstorm或vscode 2.项目初始化 新版的pycharm很 ...

随机推荐

  1. 激光炸弹 HYSBZ - 1218

    激光炸弹 HYSBZ - 1218 Time limit:10000 ms Memory limit:165888 kB OS:Linux Source:HNOI2003 一种新型的激光炸弹,可以摧毁 ...

  2. 微信支付 第三篇 微信调用H5页面进行支付

    上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...

  3. SSM框架之SpringMVC(6)异常处理及拦截器

    SpringMVC(6)异常处理及拦截器 1.异常处理 1.1.异常处理的思路 ​ 系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主 ...

  4. xshell破解

    1.下载注册版本 第一步.打开netsarang公司的官方中文网站,https://www.netsarang.com/zh/all-downloads,选择Xshell6下载     第二步.选择试 ...

  5. Vue初始化过程

    用vue也有一两年了,始终对vue一知半解,不怎么了解内部的执行过程,最近在看vue源码,还是不少收获的,其中不乏浏览器事件轮询机制.闭包.设计模式等,还是非常值得一读.本篇简要记录下vue的初始化过 ...

  6. HTML入门(列表、表单、常用表单控件、浮动框架、iframe、 摘要与细节、度量标签)

    一.列表 1.作用:默认显示方式为从上到下的显示数据 2.列表的组成 列表类型和列表项 3.列表的分类:有序列表   无序列表   自定义列表 无序列表语法为ul>li, 语法:ul代表列表,l ...

  7. 搭建虚拟机+静态IP+XShell管理虚拟机+jdk+tomcat热部署

    第一步:搭建虚拟机 大家可以参考http://blog.csdn.net/u012453843/article/details/68947589这篇博客进行学习 第二步:配置静态IP并且要能上网 大家 ...

  8. Centos手动安装PHP

    下载PHP的源码,我下的是7.2版本,看了一下安装的参数太多了,也没有时间依次了解每个参数的意思,直接从网上复制了一个,先尝试安装起来.并记录一下步骤,基本的步骤就是解压.配置.编译.运行.1.下载P ...

  9. CentOS自动化安装LAMP脚本

    #!/bin/bash #-- #blog:lizhenliang.blog.51cto.com ########## function ########## depend_pkg () { yum ...

  10. 利用Haproxy搭建 HTTP 请求走私(Request smuggling)环境

    Haproxy 介绍 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. 请求走私(Request smuggling)概念证 ...