Django 2.0 版本发布了,重点翻译下部分新功能

django

Django 是 Python Web 开发最常用的框架之一,让我们来一起跟进它的最新变化吧。

Django 官方发布了 2.0 版本,成为多年来第一次的大版本提升,那么 2.0 版本有哪些新功能和需要注意的地方呢?

一、Python兼容性

Django 2.0 支持 Python 3.4、3.5 和 3.6。我们强烈建议并且仅支持每个版本的最新版。

Django 1.11.x是支持Python2.7的最后版本。

Django 2.0 将是支持 Python 3.4 的最后一个版本。如果您计划在Django 2.0(2019年4月)之后对Python 3.4进行部署,请使用Django 1.11 LTS(支持到2020年4月)。但请注意,Python 3.4的使用期限是2019年3月。

最重要的是 Django 2.0 不再支持 Python 2!全面进入 Python 3 的怀抱!

二、第三方库

在 Django 2.0 发布之后,我们建议第三方应用程序作者在1.11之前放弃对所有Django版本的支持。

三、Django 2.0 新功能

1. 简单的URL路由语法

url(r'^articles/(?P[0-9])/$', views.year_archive),

现在可以写为:

path('articles//', views.year_archive),

新的语法支持URL参数的类型强制。在这个例子中,视图将接收年份关键字参数作为一个整数,而不是一个字符串。而且,在重写的例子中,匹配的URL会稍微受到限制,例如,年份10000现在会被匹配,因为整数并不像正则表达式那样被限制为正好四位数。

2.适合移动设备的后台管理界面

管理员页面现在是响应式特性和支持所有主要的移动设备。较旧的浏览器可能会遇到不同程度的优雅降级。

3.Window 表达式

新的Window表达式允许为查询集添加一个OVER从句。

4.小特性

新的 ModelAdmin.autocomplete_fields 属性和 ModelAdmin.get_autocomplete_fields() 方法现在可以在外键和多对多字段上使用Select2搜索框。

PBKDF2密码哈希默认的迭代次数从36000增加到100000。

为AsGeoJSON、GeoHash和GeoHash方法,isvalid和distance查询增加MySQL支持;

添加Azimuth和LineLocatePoint方法,支持PostGIS和SpatiaLite;

所有从GeoJSON导入的GEOSGeometry拥有SRID集合;

添加 OSMWidget.default_zoom属性,用于自定义地图的默认缩放级别;

metadata现在是可读可编辑的;

允许在GDAL的内部虚拟文件系统中创建GDALRaster对象;

新的 GDALBand.color_interp()方法返回波段的颜色说明。

ArrayAgg 新增 distinct 参数;

新的 RandomUUID 函数。

现在支持 fastupdate 和 gin_pending_list_limit 参数;

新的 GistIndex 类允许在数据库中创建 GiST 索引;

inspectdb 现在可以内省 JSONField 和 RangeFields。

为GenericSitemap构造器增加protocol参数。

Cache缓存

cache.set_many()现在返回一个列表,包含了插入失败的键值。

File Storage文件存储

File.open() 现在可以用于上下文管理器,例如 :

with file.open() as f:

Forms表单

Generic Views通用视图

新的 ContextMixin.extra_context属性允许在 View.as_view()中添加上下文。

Management Commands管理命令

inspectdb现在将MySQL的无符号整数视作 PositiveIntegerField或者 PositiveSmallIntegerField。

新增 makemessages --add-location选项。loaddata现在可以从标准输入读入。

新增 diffsettings --output选项。

Migrations迁移

新增 squashmigrations --squashed-name选项。

Models模型

新增StrIndex数据库函数。

对于Oracle数据库,AutoField和BigAutoField现在会生成identity列。

QuerySet.iterator() 新增 chunk_size 参数。

QuerySet.earliest()、 QuerySet.latest() 和 Meta.get_latest_by 现在可以根据一些字段进行排序。

增加ExtractQuarter方法,用于DateField和DateTimeField。

新增 TruncQuarter 方法用于截取 DateField 和 DateTimeField 到季度的第一天。

为基于类的索引添加 db_tablespace参数。

为 QuerySet.select_for_update() 增加 of 参数,但只支持 PostgreSQL 和 Oracle 数据库。

QuerySet.in_bulk() 新增 field_name 参数。

CursorWrapper.callproc() 现在接收可选的字典类型关键字参数。

QuerySet.values_list() 新增 named 参数,用于获取命名的元组结果。

新的FilteredRelation类允许为查询集增加一个ON从句。

增加 Paginator.get_page(),可以处理各种非法页面参数,防止异常。

Requests and Responses请求和相应

现在,runserver服务器支持HTTP 1.1。

Templates模版

为了提高 Engine.get_default() 在第三方模块的用途,现在它将返回配置在TEMPLATES中的多个DjangoTemplates引擎中的第一个,而不是弹出ImproperlyConfigured错误。

自定义模版标签现在接收强制关键字参数。

Tests测试

为LiveServerTestCase添加多线程支持。

Validators验证器

新的ProhibitNullCharactersValidator不允许CharField及其子类的表单输入为空。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171213A0J3AL00?refer=cp_1026

相关快讯

扫码关注云+社区