iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django 2.0 发布,都有哪些新
  • 685
分享到

Django 2.0 发布,都有哪些新

都有哪些Django 2023-01-31 08:01:09 685人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

Django 是 python WEB 开发最常用的框架之一,跟进它的最新变化绝对是必须的。 2017年12月2日,DjanGo官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪些变化和需要注意的地

Djangopython WEB 开发最常用的框架之一,跟进它的最新变化绝对是必须的。

2017年12月2日,DjanGo官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪些变化和需要注意的地方呢?

Django 2.0支持python3.4、3.5和3.6。Django官方强烈推荐每个系列的最新版本。

最重要的是Django 2.0不再支持Python2!

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

1.简化了URL路由语法

django.urls.path()方法的语法更简单了。

例如以前的:
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_arcHive),

可以写作:
path('articles/<int:year>/', views.year_archive),

新语法支持强制定义参数类型。例子中只接收整数型年份参数,不再接收字符串类型,同时'10000'年也是合法的(虽然是5位数字),而不像先前正则里只能接收4位数字。

以前版本的 django.conf.urls.url()方法变成了 django.urls.re_path(),但为了向后兼容,旧的依然保留,而不是立刻废弃。 django.conf.urls.include()方法现在可以从 django.urls导入,也就是你可以使用 from django.urls import include, path, re_path

2.admin后台对移动端更加友好

Django最受大家欢迎的admin后台,具有响应式特性,支持主流的移动设备。

3.Window 表达式

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

4.小特性

django.contrib.admin后台

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

django.contrib.auth用户认证

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

django.contrib.GIS地理框架

  • 为AsGeoJSON、GeoHash和GeoHash方法,isvalid和distance查询增加Mysql支持;
  • 添加Azimuth和LineLocatePoint方法,支持PostGIS和SpatiaLite;
  • 所有从GeojsON导入的GEOSGeometry拥有SRID集合
  • 添加 OSMWidget.default_zoom属性,用于自定义地图的默认缩放级别;
  • metadata现在是可读可编辑的;
  • 允许在GDAL的内部虚拟文件系统中创建GDALRaster对象;
  • 新的 GDALBand.color_interp()方法返回波段的颜色说明。

django.contrib.postgres数据库

  • ArrayAgg新增distinct参数;
  • 新的RandomUUID函数;
  • django.contrib.postgres.indexes.GinIndex现在支持 fastupdate和 gin_pending_list_limit参数;
  • 新的GistIndex类允许在数据库中创建GiST索引
  • inspectdb现在可以内省JSONField和RangeFields。

django.contrib.sitemaps站点地图

  • 为GenericSitemap构造器增加protocol参数;

Cache缓存

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

File Storage文件存储

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

FORMs表单

  • SplitDateTimeWidget和 SplitHiddenDateTimeWidget增加 date_attrs与 time_attrs参数,用于为 DateInput与 TimeInput指定html属性;
  • 新的 Form.errors.get_json_data()方法返回字典类型的表单错误,以适应JSON类型x响应;

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请求和相应

Templates模版

  • 为了提高 Engine.get_default()在第三方模块的用途,现在它将返回配置在TEMPLATES中的多个DjangoTemplates引擎中的第一个,而不是弹出ImproperlyConfigured错误;
  • 自定义模版标签现在接收强制关键字参数;

Tests测试

  • 为LiveServerTestCase添加多线程支持;

Validators验证器

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

1. 某些地方删除对bytestrings的支持

例如,对于reverse(),现在使用str()代替force_text()。

2. AbstractUser.last_name的最大长度增加到150

如果你有一个自定义的用户模型继承了AbstractUser,你需要生成并应用一个数据库迁移,使得 last_name的最大长度变为150。

如果你需要为 last_name保持30个字符的限制,可以如下使用自定义表单:

  1. from django.contrib.auth.forms import UserChangeForm
  2. class MyUserChangeForm(UserChangeForm):
  3.    last_name = forms.CharField(max_length=30, required=False)

如果你需要在admin中也保持这个约束,那么可以如下使用UserAdmin.form:

  1. from django.contrib.auth.admin import UserAdmin
  2. from django.contrib.auth.models import User
  3. class MyUserAdmin(UserAdmin):
  4.    form = MyUserChangeForm
  5. admin.site.unregister(User)
  6. admin.site.register(User, MyUserAdmin)

3. QuerySet.reverse()和last()不能用于切片后的查询集

对切片后的查询集使用反转和获取最近对象的操作将弹出异常,如下所示:

  1. >>> Model.objects.all()[:2].reverse()
  2. Traceback (most recent call last):
  3. ...
  4. TypeError: Cannot reverse a query once a slice has been taken.

4. 表单的字段不再接收可选参数作为位置参数

为了防止运行时错误,提高可靠性。以前类似下面的参数传递方法,现在是错误的了:
forms.IntegerField(25, 10)

要这么传递:
forms.IntegerField(max_value=25, min_value=10)

5. Index不再接收位置参数

例如下面的用法将导致异常:
models.Index(['headline', '-pub_date'], 'index_name')

要提供参数关键字,改写为:
models.Index(fields=['headline', '-pub_date'], name='index_name')

6. call_command()将验证它接收的选项

对于使用选项而不是使用 parser.add_argument()进行自定义的管理命令,需要添加一个 stealth_options属性,如下所示:

  1. class MyCommand(BaseCommand):
  2.    stealth_options = ('option_name', ...)

7. sqlite现在支持外键约束

另外,Django2.0还废弃和移除了一些方法和属性。

--结束END--

本文标题: Django 2.0 发布,都有哪些新

本文链接: https://www.lsjlt.com/news/192515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django 2.0 发布,都有哪些新
    Django 是 Python Web 开发最常用的框架之一,跟进它的最新变化绝对是必须的。 2017年12月2日,Django官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪些变化和需要注意的地...
    99+
    2023-01-31
    都有哪些 Django
  • Play Framework 2.0新特性都有哪些呢
    这篇文章将为大家详细讲解有关Play Framework 2.0新特性都有哪些呢,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Play Framework 刚刚发布了2.0正式版,来看看 P...
    99+
    2023-06-17
  • Barista 2.0 alpha2发布有哪些改进
    这篇文章主要为大家展示了“Barista 2.0 alpha2发布有哪些改进”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Barista 2.0 alpha2发布有哪些改进”这篇文章吧。Bari...
    99+
    2023-06-17
  • 商业PHP开发工具PhpStorm 2.0发布的新功能有哪些
    本篇文章为大家展示了商业PHP开发工具PhpStorm 2.0发布的新功能有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PhpStorm 是 JetBrain...
    99+
    2024-04-02
  • Grails 2.0 正式版发布有哪些改进
    小编给大家分享一下Grails 2.0 正式版发布有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Grails 2.0 正式版发布了,Grails是一套用...
    99+
    2023-06-17
  • Ruby 2.0 有哪些新特性
    这篇文章主要介绍“Ruby 2.0 有哪些新特性”,在日常操作中,相信很多人在Ruby 2.0 有哪些新特性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ruby 2.0 有...
    99+
    2024-04-02
  • Android 10正式版发布,看看都有哪些新特性
    Android 10是谷歌于2019年9月3日正式发布的最新版本的Android操作系统。以下是Android 10中的一些主要新特...
    99+
    2023-09-20
    Android
  • es6新特性都有哪些
    本教程操作环境:Windows10系统、ECMAScript 6版、Dell G3电脑。es6新特性都有哪些?ES6新特性1、let和const前面讲过:https://www.php.cn/js-tutorial-499866.html2...
    99+
    2023-05-14
    ES6
  • Vue 2.0有哪些变化
    本篇内容介绍了“Vue 2.0有哪些变化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!高层级的变化模板解析...
    99+
    2024-04-02
  • CSS3新增的伪类都有哪些
    CSS3新增的伪类都有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先大家应该都知道css是什么吧?     ...
    99+
    2024-04-02
  • Ubuntu Tweak 0.7.3发布的新特性有哪些呢
    本篇文章给大家分享的是有关Ubuntu Tweak 0.7.3发布的新特性有哪些呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Ubuntu Tweak 0.7.3正式发布了,...
    99+
    2023-06-16
  • MySQL 8.0 正式版发布的新特性有哪些
    这篇文章将为大家详细讲解有关MySQL 8.0 正式版发布的新特性有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL 8.0 正式版 8.0.1...
    99+
    2024-04-02
  • SQL的开发建议都有哪些
    本篇文章为大家展示了SQL的开发建议都有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MYSQL 开发建议关于建表 1、尽量使用INNODB存储引擎。 2、...
    99+
    2024-04-02
  • WebStorm发布2021.3更新了哪些新功能
    这篇文章主要讲解了“WebStorm发布2021.3更新了哪些新功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WebStorm发布2021.3更新了哪些新功能”吧!新功能和改进分为以下几...
    99+
    2023-06-21
  • 亚马逊新发布服务器有哪些类型
    云服务器(Cloud Server):亚马逊提供的云服务器是基于云计算技术构建的服务器设备,可以在云端或本地环境中提供计算、存储、数据库、网络等各种服务。 弹性计算服务器(Resilient Compute Server):亚马逊提供的弹...
    99+
    2023-10-27
    亚马逊 类型 服务器
  • Qemu0.10.0发布有哪些特点
    这篇文章主要介绍Qemu0.10.0发布有哪些特点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Qemu 团队已发布 0.10.0 版本。该版本历经一年多的开发,从 80 位开发者带来了几近 3000 个改动。Qem...
    99+
    2023-06-17
  • Play Framework 2.0 RC1有哪些特性
    这篇文章主要介绍“Play Framework 2.0 RC1有哪些特性”,在日常操作中,相信很多人在Play Framework 2.0 RC1有哪些特性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pla...
    99+
    2023-06-17
  • python集成开发环境都有哪些
    python集成开发环境:1.eclipse,Java开发的python集成开发环境;2.pycharm,功能强大的python编辑器;3.Sublime Text,最流行的编辑器;python集成开发环境有以下几种eclipseeclip...
    99+
    2024-04-02
  • Play1.2.4发布有哪些改进
    小编给大家分享一下Play1.2.4发布有哪些改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Play1.2.4发布。添加了对java7的支持。更好的数据绑定实...
    99+
    2023-06-17
  • vuejs1.0与2.0的区别有哪些
    这篇文章将为大家详细讲解有关vuejs1.0与2.0的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 区别:1、VUE2.0中必须用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作