前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django从1.8升级到2.0注意事项 转

Django从1.8升级到2.0注意事项 转

作者头像
晓歌
发布2018-08-15 15:05:13
8700
发布2018-08-15 15:05:13
举报
文章被收录于专栏:破晓之歌破晓之歌

原文照搬:

由于Django的产品周期问题,我们决定将Django从当前开发的1.8版本升级到2.0版本,此新最版本已不再支持python2,所以开发语言也需要相应升级到3.6版本。其间几个重要的变更技术点节录如下(以更改过程为主,不区别django还是python变更,且django中的变化也不一样是2.0中才开始具有的):

6d23625d8a884ea4bee46a3b31bf1021d53c8d6c
6d23625d8a884ea4bee46a3b31bf1021d53c8d6c

1, print

Python3中,print从语句变为函数,所以所有的print语句需要改成print()

2,on_delete

在django 2中,models中on_delete=models.XXX不再是默认选项,需要显性指定

代码语言:javascript
复制
# 表示外键关联到作者表,当作者表删除了该条数据,图书表中不删除,仅仅是把外键置空
    author = models.ForeignKey(AuthModel, null=True, blank=True, on_delete=models.SET_NULL)

3, reverse

在新版本django中,这些包不再归于core,而是属于django.urls包,需要更改import路径

代码语言:javascript
复制
from django.urls import reverse
4, MIDDLEWARE

在新版本django中,中间件的key值由MIDDLEWARE_CLASSES变更为MIDDLEWARE

5, SessionAuthenticationMiddleware

在新版本django中SessionAuthenticationMiddleware这个中间件不需要了。

6,render_to_respons e

新版本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://yq.aliyun.com/articles/324355

管理员下修改:

C:\Program Files\Anaconda3\Lib\site-packages\formtools\wizard打开views.py文件

修改第5行内容为:

代码语言:javascript
复制
from django.urls import reverse

推荐一个改错的参考文档:

django2.0集成xadmin0.6报错集锦:http://www.lybbn.cn/data/bbsdatas.php?lybbs=50

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1, print
  • 2,on_delete
  • 3, reverse
    • 4, MIDDLEWARE
    • 5, SessionAuthenticationMiddleware
    • 6,render_to_respons e
    • 7, 从__unicode__到__str__
    • 8,dict的'has_key'方法弃用
    • 9, Direct assignment to the forward side of a many-to-many set is prohibited
    • 10, Only byte strings can be passed to C code
    • 11,html输出时,byte如何转换成unicode?(网页输出是b’’)
    • 12, orm migrate
    • 13,python中virtualenv如何具有通用性?
    相关产品与服务
    消息队列 TDMQ
    消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档