Django从1.8升级到2.0注意事项
2019独角兽企业重金招聘Python工程师标准>>>
我公司从2015年开发自动化部署平台,当时选用的开发框架是Django1.8版本。这两年多来,基于其上,很好的满足了我们的开发需求。
由于Django的产品周期问题,我们决定将Django从当前开发的1.8版本升级到2.0版本,此新最版本已不再支持python2,所以开发语言也需要相应升级到3.6版本。其间几个重要的变更技术点节录如下(以更改过程为主,不区别django还是python变更,且django中的变化也不一样是2.0中才开始具有的):
1, print
Python3中,print从语句变为函数,所以所有的print语句需要改成print()
2,on_delete
在django 2中,models中on_delete=models.XXX不再是默认选项,需要显性指定
3, reverse
在新版本django中,这些包不再归于core,而是属于django.urls包,需要更改import路径
4, MIDDLEWARE
在新版本django中,中间件的key值由MIDDLEWARE_CLASSES变更为MIDDLEWARE
5, SessionAuthenticationMiddleware
在新版本django中SessionAuthenticationMiddleware这个中间件不需要了。
6, render_to_response
新版本django中render_to_response不建设使用,改为使用render函数。
7, 从__unicode__到__str__
新版本python后,django的models定义需要从__unicode__变更到__str_
8,dict的'has_key'方法弃用
新版python中字典的has_key方法取消,建议用”str” in dict判断
9, Direct assignment to the forward side of a many-to-many set is prohibited
新版django中,orm多对多外健不再用=等赋值,改为set方法
new_list = [obj1, obj2, obj3]
e.related_set = new_list ===》 e.related_set.set([obj1, obj2, obj3])
10, Only byte strings can be passed to C code
在使用PyCryptodome作AES加密解密时,注意python3里decode和encode的使用
11,html输出时,byte如何转换成unicode?(网页输出是b’’)
str(b'','utf8')可以吧BYTES转换成unicode;bytes('','utf8')反向操作
12, orm migrate
在django升级之后,makemigration重作,migrate可能需要手工增加on_delete=models.XXX
13,python中virtualenv如何具有通用性?
如果安装好新版python3解释之后,通过更改active文件中的路径,可以实现拷贝目录通用.
转载于:https://my.oschina.net/u/3637633/blog/1596803
Django从1.8升级到2.0注意事项相关推荐
- gradle tool升级到3.0注意事项
Gradle版本升级 其实当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持.新的依赖匹配机制.AAPT2等新功能都无法正常使用 ...
- 127.0.0.1 myz.php,附录 – 1.0升级到2.0注意事项 - GatewayWorker 2.x 3.x 手册
如何知道自己使用的版本是1.0还是2.0 打开文件 GatewayWorker/Gateway.php,查看是否有常量VERSION,并且常量值大于等于2.0.0 class Gateway exte ...
- 小米5怎样升级android,小米5开发版怎么升级Android 7.0?小米5开发版升级Android 7.0教程...
Android 7.0系统已经陆续推送,今天小米5手机的Android 7.0终于公测了,虽然只限于开发版,但是小伙伴们总算有盼头了!小米5开发版怎么升级Android 7.0?下面小编为大家带来小米 ...
- oracle数据库gi,Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8)
Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8) 本次演示为升级oracle rac数据库,用GI的psu升级,从11.2.0.4.0升级到11.2.0.4.8 ...
- 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误 微软官方的解释(http://msdn2.microsoft.com/zh-cn/library/0htdy ...
- 7 环境变量 立即生效_MySQL5.7升级到8.0过程详解
前言: 不知不觉,MySQL8.0已经有好多个GA小版本了.目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了.本篇文章主要介绍从5 ...
- mysql 5.6 uf8mb4_MySQL5.7升级到8.0过程详解
前言: 不知不觉,MySQL8.0已经发布好多个GA小版本了.目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了.本篇文章主要介绍从 ...
- 坚果 android 系统升级,坚果手机的系统是什么?坚果手机能升级安卓5.0吗?
坚果手机的手机系统是什么 坚果手机的手机系统是Android 4.4系统. 系统方面,坚果手机采用与锤子T1相同的Smartisan OS 1.5,基于Android 4.4.4深度定制的系统表现很出 ...
- MySQL从5.7.32升级到8.0.22
目录 一.备份与导出数据 二.升级到MySQL-8.0.22同时解决字符集问题 2.1.卸载MySQL-5.7.32 2.2.安装MySQL-8.0.22 2.3.修改配置文件 my.cnf 三.导入 ...
最新文章
- linux 光驱挂载
- 080703 雨&星巴克的菜单
- php中pregmatch,php中preg_match的isU代表什么意思
- qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ
- 鸿蒙手机是个噱头,华为鸿蒙不是谈判噱头 必要时会应用手机当中!
- tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...
- TCP校验值的伪头以及校验值计算
- 京东健康APP内测版已上线各大安卓应用商店
- tf.gradients ---错误FetchargumentNonehasinvalidtype
- python基础教程第三版-Python基础教程(第三版)(七)再谈抽象
- mysql物业管理系统设计_小区物业管理系统的设计与实现(IDEA,SSM,MySQL)
- sift vlfeat 学习
- Eclipse保护色设置
- java 时间轮_惊艳的时间轮定时器
- 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...
- 【JZOJ6287】扭动的树
- 手机游戏真的那么好赚钱吗?
- Javascript Prototype污染攻击(原型链污染,Bugku-web-sodirty wp)
- uniapp页面导出pdf
- 【youcans 的 OpenCV 学习课】7. 空间域图像滤波