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/
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python中Jieba进行词频统计与关键词提取
![](https://img.aspxhome.com/file/2023/1/65981_0s.png)
SQL Server默认1433端口修改方法
![](https://img.aspxhome.com/file/UploadPic/20107/22/20090106201914465-93s.jpg)
pytorch常用函数之torch.randn()解读
自定义django admin model表单提交的例子
![](https://img.aspxhome.com/file/2023/4/89324_0s.jpg)
大家一起来折磨浏览器吧!(好玩的东东)
Python跳出循环语句continue与break的区别
![](https://img.aspxhome.com/file/2023/6/100916_0s.jpg)
MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)
Javascript 中对中文长度对行判断
php简单防盗链验证实现方法
python中无法导入本地安装好的第三方库问题
![](https://img.aspxhome.com/file/2023/8/91918_0s.png)
使用字符串建立查询能加快服务器的解析速度吗?
TypeScript学习之强制类型的转换
百度工程师讲PHP函数的实现原理及性能分析(三)
数据库疑难讲解:改善SQL Server内存管理
PHP策略模式定义与用法示例
![](https://img.aspxhome.com/file/2023/3/125883_0s.jpg)
Python设计模式之工厂模式简单示例
![](https://img.aspxhome.com/file/2023/1/75341_0s.png)
python去除所有html标签的方法
使用requests库制作Python爬虫
基于Python的自媒体小助手---登录页面的实现代码
![](https://img.aspxhome.com/file/2023/5/109915_0s.png)
SQLite5-使用Python来读写数据库
![](https://img.aspxhome.com/file/2023/2/78662_0s.png)