在不同版本的Django下运行两个Django应用程序
我继承了一种情况,即我们在一个Django项目下有许多应用程序。这些应用程序大部分是不相关的,但仍在同一个项目中 该项目正在使用Django 1.6.4,我们希望升级到至少1.8以获得LTS版本。我想以一种可控的、渐进的方式来做这件事——每次升级一个应用程序 可以在同一个Django项目中的两个不同版本的Django下运行两个不同的应用程序吗。或者,我们唯一的选择是将每个应用程序分解成自己的项目,一次一个吗?你不能(或者更好,你不应该),只有一个版本的在不同版本的Django下运行两个Django应用程序,django,Django,我继承了一种情况,即我们在一个Django项目下有许多应用程序。这些应用程序大部分是不相关的,但仍在同一个项目中 该项目正在使用Django 1.6.4,我们希望升级到至少1.8以获得LTS版本。我想以一种可控的、渐进的方式来做这件事——每次升级一个应用程序 可以在同一个Django项目中的两个不同版本的Django下运行两个不同的应用程序吗。或者,我们唯一的选择是将每个应用程序分解成自己的项目,一次一个吗?你不能(或者更好,你不应该),只有一个版本的django可以安全地阅读settings.
django
可以安全地阅读settings.py
,即使是稍微相关的应用程序。如果您允许两个不同版本的django读取并执行单个settings.py
设置,则可能会出现混乱
理论上,您可以添加一个额外的settings.py
文件,注释掉某些应用程序(假设没有依赖项),然后在同一数据库上启动第二个django实例。但这是自找麻烦
例如,如果在django版本之间实现特定的模型。*字段
,则会遇到数据库不一致的问题。一次升级所有应用程序可能比从同一个数据库表读取/写入两个版本的django要安全得多
换句话说,如果您100%确定可以创建两个settings.py
文件,一个是安装了的应用程序中的应用程序A,另一个是安装了的应用程序中的应用程序B,并且两个settings.py中都不会出现一个应用程序,那么您就安全了。我还没有看到一个django项目,它允许应用程序之间的依赖关系将其清晰地分为两组应用程序,但是,如果您可以在项目中管理它,您可以安全地启动django的两个实例(每个实例都有不同的版本),并向每个实例传递正确的设置.py
基本上:
这些应用程序大多是无关的
“大部分”这个词是致命的
另一方面,您始终可以选择创建数据库的副本并创建两个django项目,每个项目都连接到一个数据库实例
然后,您可以在稍后将要丢弃的数据库上自由测试django的新版本。这是一个更安全的升级选择