Django 3.1版本预计2020年8月发布: 主要变化抢先看!

Django官网已公布了3.1版本预计发布时间定于2020年8月,掐指一算也没剩下几个月了,希望新版发布不会受新冠肺炎的影响。尽管最终版本尚未发布,官网上已透露了3.1版本的主要变化,我们可以来抢先看一下。

Django 3.1版本预计2020年8月发布: 主要变化抢先看!_第1张图片

官网地址:

https://docs.djangoproject.com/en/dev/releases/3.1/

Python版本兼容性

Django 3.1支持Python 3.6, 3.7和3.8版本。官网建议更新到最新Python版本。

对异步请求视图和中间件的支持

新版Django将提供支持完整的异步请求的工具,包括:

  • Asynchronous views (异步视图)

  • Asynchronous middleware (异步中间件)

  • Asynchronous tests and test client (异步测试和测试客户端)

如果你希望使用异步视图,只需要使用 async def声明,如下所示:

async def my_view(request):
    await asyncio.sleep(0.5)
    return HttpResponse('Hello, async world!')

无论你是在 WSGI 或 ASGI 模式下运行,Django都支持所有异步功能。但是在 WSGI 模式下使用异步代码将存在性能上的损失。

小编注:Django对异步的支持变得更加强大了,很多现在需要celery完成的简单异步任务可以使用async def定义异步视图实现了,最重要的是部署时无需将WSGI切换到ASGI模式。

request.is_ajax()方法将被淘汰

HttpRequest.is_ajax()方法将被淘汰,再也不能使用if request.is_ajax来判断一个请求是不是ajax请求了。新的判断方法如下:

request.headers.get('x-requested-with') == 'XMLHttpRequest'.

其它小变化

  • Django admin新增空白过滤器django.contrib.admin.EmptyFieldListFilter

  • settings.py新增PASSWORD_RESET_TIMEOUT 选项,可以密码重置链接有效期(以秒计算),将替代PASSWORD_RESET_TIMEOUT_DAYS

  • settings.py中使用startproject命令生成的根目录将使用 pathlib.Path,而不是 os.path

  • STATICFILES_DIRS设置和支持pathlib.Path

  • FileSystemStorage.save()也支持pathlib.Path

  • django.contrib.humanize模块intword可以支持负数

  • AbstractUser的first_name的最大长度由30变到150个字符

  • django-admin.py命令变成了django-admin


小编注:pathlib真是一个强大的库,开始逐步替代os.path并在django中广泛应用,有必要开始学习新的知识了。改天写篇教程分享给大家。

大家对新版Django怎么看,欢迎留言啊!如果不想错过阅读我们的文章,请把我们的公众号【Python Web与Django开发】加星标哦。

大江狗

2020.03.30

相关阅读

Django的未来在哪里?

支持异步的Django 3.X来了,你准备好了吗? Django 3.0新特色与变化详解。

你可能感兴趣的:(Django 3.1版本预计2020年8月发布: 主要变化抢先看!)