Django从1.8升级到2.0注意事项

简介: 由于Django的产品周期问题,我们决定将Django从当前开发的1.8版本升级到2.0版本,此新最版本已不再支持python2,所以开发语言也需要相应升级到3.6版本。


 

我公司从2015年开发自动化部署平台,当时选用的开发框架是Django1.8版本。这两年多来,基于其上,很好的满足了我们的开发需求。

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

 6d23625d8a884ea4bee46a3b31bf1021d53c8d6c

1, print

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

2,on_delete

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

3, reverse

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

4, MIDDLEWARE

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

5, SessionAuthenticationMiddleware

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

6, render_to_response

新版本djangorender_to_response不建设使用,改为使用render函数。

7, 从__unicode__到__str__

新版本python后,djangomodels定义需要从__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

在使用PyCryptodomeAES加密解密时,注意python3decodeencode的使用

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文件中的路径,可以实现拷贝目录通用.

 

 

 

 

目录
相关文章
|
前端开发 JavaScript Python
Django 产品从1.X升级到2.X的移植
Django 产品从1.X升级到2.X的移植
100 0
|
关系型数据库 数据库连接 数据库
|
4月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
185 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
245 4
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
187 45
|
1月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
67 2
|
3月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
149 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
47 4