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注意事项相关推荐

  1. gradle tool升级到3.0注意事项

    Gradle版本升级 其实当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持.新的依赖匹配机制.AAPT2等新功能都无法正常使用 ...

  2. 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 ...

  3. 小米5怎样升级android,小米5开发版怎么升级Android 7.0?小米5开发版升级Android 7.0教程...

    Android 7.0系统已经陆续推送,今天小米5手机的Android 7.0终于公测了,虽然只限于开发版,但是小伙伴们总算有盼头了!小米5开发版怎么升级Android 7.0?下面小编为大家带来小米 ...

  4. 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 ...

  5. 从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误

    从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误 微软官方的解释(http://msdn2.microsoft.com/zh-cn/library/0htdy ...

  6. 7 环境变量 立即生效_MySQL5.7升级到8.0过程详解

    前言: 不知不觉,MySQL8.0已经有好多个GA小版本了.目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了.本篇文章主要介绍从5 ...

  7. mysql 5.6 uf8mb4_MySQL5.7升级到8.0过程详解

    前言: 不知不觉,MySQL8.0已经发布好多个GA小版本了.目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了.本篇文章主要介绍从 ...

  8. 坚果 android 系统升级,坚果手机的系统是什么?坚果手机能升级安卓5.0吗?

    坚果手机的手机系统是什么 坚果手机的手机系统是Android 4.4系统. 系统方面,坚果手机采用与锤子T1相同的Smartisan OS 1.5,基于Android 4.4.4深度定制的系统表现很出 ...

  9. 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 三.导入 ...

最新文章

  1. linux 光驱挂载
  2. 080703 雨&星巴克的菜单
  3. php中pregmatch,php中preg_match的isU代表什么意思
  4. qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ
  5. 鸿蒙手机是个噱头,华为鸿蒙不是谈判噱头 必要时会应用手机当中!
  6. tensorboard ckpt pb 模型的输出节点_FlyAI小课堂:Tensorflow-模型和数据的保存和载入...
  7. TCP校验值的伪头以及校验值计算
  8. 京东健康APP内测版已上线各大安卓应用商店
  9. tf.gradients ---错误FetchargumentNonehasinvalidtype
  10. python基础教程第三版-Python基础教程(第三版)(七)再谈抽象
  11. mysql物业管理系统设计_小区物业管理系统的设计与实现(IDEA,SSM,MySQL)
  12. sift vlfeat 学习
  13. Eclipse保护色设置
  14. java 时间轮_惊艳的时间轮定时器
  15. 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...
  16. 【JZOJ6287】扭动的树
  17. 手机游戏真的那么好赚钱吗?
  18. Javascript Prototype污染攻击(原型链污染,Bugku-web-sodirty wp)
  19. uniapp页面导出pdf
  20. 【youcans 的 OpenCV 学习课】7. 空间域图像滤波

热门文章

  1. 计算机视觉迎新突破?谷歌AI模型打破现有CNNs精度
  2. 一文了解机器学习中的交叉熵
  3. SAP EWM - 存储类型 - 入库控制
  4. SAP MM ME21N 创建委外采购PO报错 - Not possible to determine any components - 之对策
  5. python中字符串(比如文件路径)前面有一个r什么意思
  6. 强化学习到底是什么,它如何运作?
  7. 美国运通使用AI技术检测欺诈行为 增强安全性
  8. 深度学习不能取代计算机视觉技术背后的真正原因
  9. 存内计算能否成为下一代AI芯片的关键
  10. 武器化道路越走越远的无人机