技术标签: python django mysql 数据库 大数据
Django 3.1版本已于8月4日正式发布了,里面又有不少激动人心的变化,让Django变得更强大了。小编我今天就带大家看看有哪些主要变化吧?
Python版本兼容性
Django 3.1支持Python 3.6, 3.7和3.8版本。官网建议更新到最新版本。
对异步请求视图和中间件的支持
从3.1起,Django将提供支持完整的异步请求(request),包括:
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的ORM,缓存层和其他长时间运行网络调用的代码尚不支持异步访问。我们希望在即将发布的版本中增加对它们的支持。异步视图是理想的选择,但是,如果您在视图内进行大量的API或HTTP调用,则现在可以本地并行执行所有这些HTTP调用,以大大加快视图的执行速度。
小编注:一般建议使用同步视图函数,只有在有需要的情况下使用异步视图。小编后面会分享具体案例,欢迎关注。
Django现在新增models.JSONField, forms.JSONField并且支持在更多数据库上运行。这两个字段都支持使用自定义JSON编码器和解码器。以前json格式的数据仅适用于PostgreSQL数据库。
存储的json格式的数据可以使用Django的ORM语法进行链式查询,如下所示:
from django.db import models
class ContactInfo(models.Model):
data = models.JSONField()
ContactInfo.objects.create(data={
'name': 'John',
'cities': ['London', 'Cambridge'],
'pets': {'dogs': ['Rufus', 'Meg']},
})
ContactInfo.objects.filter(
data__name='John',
data__pets__has_key='dogs',
data__cities__contains='London',
).delete()
更多阅读:
全面转向pathlib
从3.1后,Django将广泛使用pathlib来处理文件路径,而不是os.path模块。settings.py中使用startproject命令生成的根目录将使用 pathlib.Path。STATICFILES_DIRS和FileSystemStorage也将支持pathlib.Path。
更多阅读:
为什么你要在Django项目中开始使用pathlib而不是os.path处理拼接文件路径
国际化
从3.1后,模板中负责标记需要翻译字符串的标签{% trans %}和{% blocktrans %}将分别被更名为{% translate %}和{% blocktranslate %}。不过短期内较早的trans 和blocktrans模板标签依然可以使用。
<title>{% translate "This is the title." %}</title>
<title>{% translate myvar %}</title>
{% blocktranslate %}
This string will have {
{ value }} inside.
{% endblocktranslate %}
更多阅读
其它小变化
Django admin新增空白过滤器django.contrib.admin.EmptyFieldListFilter,并在大屏幕上多了侧边导航
settings.py新增PASSWORD_RESET_TIMEOUT 选项,可以密码重置链接有效期(以秒计算),将替代PASSWORD_RESET_TIMEOUT_DAYS
django.contrib.humanize模块intword可以支持负数
AbstractUser的first_name的最大长度由30变到150个字符
Django 3.1的变化,你最喜欢哪个呢? 欢迎留言。
大江狗
2020.8
如果你订阅公众号过多,为了第一时间能阅读我们的原创技术干货,请一定解读加关注并设为星标。
一、SpringBoot概述Spring 框架对于很多 Java 开发人员来说都不陌生。自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架。有大量的企业应用基于 Spring 框架来开发。Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题。每个子项目都有一定...
diff --git a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp b/frameworks/base/core/jni/com_android_internal_os_Zygote.cppindex 614d46b..d410776 100644--- a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp+++ b/frameworks/base/co.
support-v4、appcompat-v7、NineOldAndroids 被广泛使用,于是很容易被多次引用导致冲突。记录 Butterknife 8.5.1 引用冲突解决
网址导航引导页面H5源码
1、校验输入版本号的格式(1-2位数字、1-2个小数点):11.21.31或11.22或1.22或1.2.31const reg = /^\d{1,3}.\d{1,3}(.\d{1,3})?$/;if ((this.target_version != "") & !reg.test(this.target_version)) { return "请输入正确的实验上线版本,支持的版本号格式为“数字.数字”、“数字.数字.数字”";}2、将数字转换为千分位格式:可以直接用toLocal
第一类:PL/SQL变量(在DECLARE阶段被声明和初始化)(*每一行只声明一个变量)(在执行阶段被赋予新值)(可以在PL/SQL之间传递值)(通过标准输出包可以看到结果)变量初始化和关键字:identifier[CONSTANT]datatype[NOTNULL][:=|DEFAULTexpr];[CONSTANT]必须初始化,并且其值不能改变[NOT...
问题描述:xxljob定时任务中写了一个线程池,每次调用定时任务,都会起7条线程,进行数据传输,程序运行时报错:java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attribubug原因:线程池中的子线程获取不到定时任务主线程的request信息解决方法:在定义线程池之前加入两行代码,设置request子线程共享// 子线程request共享ServletRe
一、实验题目文件和文件夹的管理二、实验目的1.熟悉Windows XP的文件系统。2.掌握资源管理器的使用方法。3.熟练掌握在Windows XP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。三、实验内容1.启动资源管理器并利用资源管理器浏览文件。2.在D盘创建文件夹3.在所创建文件夹中创建Word文件。4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建...
情景:今天本来是在linux下装tomcat服务器,然后访问tomcat的欢迎页,在linux下可以正常访问,localhost:端口或者linux的ip:端口,都可以进入,但是,我想在windows下访问linux的ip:端口,也访问tomcat的主页(欢迎页),但是竟然打不开。。。。刚开始以为是linux的防火墙没有关闭,然后在度度上搜索各种方法,把linux的防火墙关闭。然后,,,然后,我就
课程前言基础file->bulid setting :设置平台manual手册官方教程scripting api文档事件函数fixedTime:游戏运行一共占用的时间frameCount:帧数realtimeSinceStartup:游戏从开始到现在一直占用的时间,游戏暂停的话会继续开始计时smoothDeltaTimetimeSinceLevelLoad:游戏运行一共占用...
1、什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。我们主要针对互联网服server系统(类似网站)来定义架构:架构是系统的骨架,支撑和链接各个部分,包括组件、连接件、约束规范,以及指导这些内容设计与演化的原理。组件:类似应用服务,独立模块、数据库、nginx等等、连接件:分布式调用、进程间调用、调用...
安装前提安装步骤配置subversion一、安装前提 1.关闭防火墙# service iptables stop# chkconfig iptables off# service ip6tables stop# chkconfig ip6tables off 2.关闭SElinux# perl -i -p -e 's/=enf...