升级 Django 版本:最佳实践

Posted

技术标签:

【中文标题】升级 Django 版本:最佳实践【英文标题】:Upgrading Django Version: Best Practice 【发布时间】:2017-11-06 19:15:52 【问题描述】:

我在 Django 1.5 上编写了相当大的代码库,是时候升级到最新版本 (1.11.2),因为很多东西都不能正常工作。

我想知道是否最好逐步升级:1.5->1.6->1.7... 或者直接跳到 1.11.2

什么方法应该更好并使(硬)过程更容易?因为我的项目有很多依赖项?

还有哪些好的做法?我正在使用 virtualenv 并且知道这个Django article about upgrading

【问题讨论】:

我建议您只阅读各个版本的更改日志,然后一路升级 - 是的,增量升级是有价值的,但考虑到框架更改的重要性,这个过程非常繁琐已经通过了。 【参考方案1】:

这取决于两件事。有多少人在使用 Django 应用,以及测试覆盖范围的扩展。

如果你是唯一的用户,不用担心,一路升级。但是,如果您有很多用户,您会通过一路升级到 1.11.2 很快发现,您的测试可能无法涵盖某些边缘情况。

预计会有很多错误 500。

如果您对所有应用的覆盖率接近 100%,则您可能不会遇到这个问题。

请注意,自 1.5 以来发生了很多变化。

【讨论】:

它仅供我使用,没有测试:) 一直如此:)【参考方案2】:

我的情况是:数据

我正在使用 SQLite,我确信,如果您只有 1 个冲突,最新版本可能会杀死您。

python manage.py makemigrations等在它的方法中有很多机会。

如果你把 Python 从 2x 改成 3x,那也是一个新案例 =))

【讨论】:

【参考方案3】:

您找到的文档(“Upgrading Django to a newer version”)有一个很好的指南。

一个重要的部分,升级之前,是在升级之前通过自动化测试套件为您的应用程序拥有完整的分支覆盖率

您希望能够运行一个完全自动化的测试套件,看到一切都通过了并且知道all branches are exercised by the test suite。

这意味着当您通过移植到新的 Django 版本来破坏某些东西时,您将能够看到应用程序的哪些部分不再正常运行。

通过阅读release notes 和deprecation timeline,了解您需要对当前 Django 版本和目标 Django 版本之间的所有相关版本进行哪些更改。

查看您需要为 Django 升级哪些依赖项;如果代码依赖于过时的第三方库中的不兼容功能,您可能需要更正代码。

在我看来,

所有这些都应该在升级之前完成。

【讨论】:

以上是关于升级 Django 版本:最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

蓝绿部署滚动发布灰度发布的介绍以及最佳实践

Django 脚本组织的最佳实践

使用 Gunicorn 运行 Django - 最佳实践

升级 cassandra 的最佳实践

Django 查看安全性和最佳实践

使用 Tomcat 部署 grails 应用程序的最佳实践