django 2.0更新的10条注意事项总结
作者:daisy 发布时间:2023-05-22 10:48:35
前言
备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x版本了,这也为我们还在保守使用的2.x的同学们敲响了警钟,赶紧学习python3.x吧,虽然大同小异,但是python3.x还是提供了很多更高级的用法。
Python兼容性
Django 2.0支持Python3.4、3.5和3.6。Django官方强烈推荐每个系列的最新版本。
最重要的是Django 2.0不再支持Python2!
Django 1.11.x是支持Python2.7的最后版本。
django2.0 弃用的特性
下面这些是我在升级到Django 2.0后遇到的最常见的一些错误:
1. url
from django.core.urlresolvers import reverse
变成了
from django.urls import reverse
2. MIDDLEWARE
settings.py文件,MIDDLEWARE_CLASSES更改成了MIDDLEWARE,这个一定要注意。
3. django.shortcuts.render()
django.shortcuts.render_to_response()
方法已经被弃用了,现在使用django.shortcuts.render()
方法。
4. User.is_authenticated 和User.is_anonymous
之前的User.is_authenticated()
和User.is_anonymous()
方法更改成了属性:User.is_authenticated
和User.is_anonymous
。
5. SessionAuthenticationMiddleware
删除了SessionAuthenticationMiddleware类,不再需要该中间件,在Django 1.10+中已经默认开启了。
6. assignment_tag 改成simple_tag
@register.assignment_tag
改成了@register.simple_tag
。
django2.0 更新的特性
下面的是更新到Django 2.0遇到的一些新特性
7. on_delete=models.CASCADE
为model的ForeignKey和OneToOne的属性增加on_delete=models.CASCADE
。
8. URL编写进行了简化
Django以前的URL规则是正则规则,写起来是有点 * 的,一点都不Pythonic。开发者们一直在被迫写类似这样的匹配表达式:
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
现在,你可以这样写了:
path('articles/<int:year>/', views.year_archive),
9. 聚合操作
数据库查询的聚合操作annotate中,增加了一个叫Window的操作,和一个叫Frame的条件。
10. 首页
除此之外,首次启动的欢迎页面也重做了,感觉高大上了很多,有没有 django2-index
总结
有关Django 2.0的新功能和更改的完整列表,请参阅官方文档。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
来源:https://blog.qikqiak.com/post/upgrading-django-20-10-tips/
猜你喜欢
- session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessio
- 项目开始时是一个关键时刻,选择会对项目产生长期的影响。有很多关于如何开始使用Django框架的教程,但很少讨论如何专业地使用Django,或
- 1. 引言在本文中,我们将研究从列表中选择随机元素的不同实现方法。在日常项目中,我们经常会遇到这种情形,比如随机从多种数据增强策略中选择一种
- 1 无参数情况配置URL及其视图如下:(r'^hello/$', hello)def hello(request): &nb
- 前言 本篇章主要介绍串的KMP模式匹配算法及其改进,并用Python实现KMP算法。1. BF算法 BF算法,即Bruce−ForceB
- 一.下载安装包官网下载:python 3.6.0打开链接滑到页面最下方二. 开始安装1.双击下载好的安装文件python-3.6.0-amd
- 本文实例讲述了thinkPHP框架实现类似java过滤器的简单方法。分享给大家供大家参考,具体如下:写java web代码的时候,可以定义过
- 利用GDAL库对tif影像进行读取 示例代码默认波段为[B、G、R、NIR的顺序,且为四个波段]import gdaldef readTif
- 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只
- 这次讨论一下关于select元素的一个问题,其实很早以前我就碰到过关于select元素的问题,这次做网站又被问到同样的问题,就是:一般div
- 前言优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行C
- 比较简单的一个页面,类似csdn论坛在ns下的左边列表 描述: 1. 数据名:tree.mdb 表名:tree 表结构:id(自编)&nbs
- 一、闭包1.1 三要素 必须有一个内嵌函数内嵌函数必须引用外部函数中变量外部函数返回值必须是内嵌函数1.2 语法# 语法def 外部函数名(
- 一、问题的提出随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场
- 简介在日常的Python开发中,处理时间和日期的需求是非常常见的。尽管Python内置了 datetime 和 time 模块,但在某些情况
- 当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以
- 可以,具体说明和代码见下: <%@ Language=VBScript %><%Option
- 惭愧啊,今天写了个查找子串的Python程序被BS了…如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码:#
- python 获取蓝牙设备类型扫描蓝牙设备获取到的信息中,无法判断扫描到的蓝牙设备属于什么类型的设备。扫描蓝牙信息使用的是python 里面
- Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的?