将django1.2项目迁移到django1.4

时间:2012-08-14 05:17:18

标签: python django migration

我们用django 1.2版和python 2.4开发了项目。现在我们要将项目迁移到最新版本(Django1.4和python2.7)。

我对迁移非常新,任何人都可以就此提出建议。

我需要照顾什么? 我们需要重新编写所有代码吗?

4 个答案:

答案 0 :(得分:2)

这就是我们正在做的事情(我们将〜60Kloc从Django 0.97升级到1.4):

  • 创建代码的升级分支
  • 创建用于升级的virtualenv
  • 下载Django的“下一个”版本(如果您更喜欢小步骤),或者您希望最终使用的Django版本,并将其放入您自己的版本控制系统(VCS)。
  • 从你的VCS中查看Django到你的virtualenv的根目录。
  • 重复完成:
    • 运行您的测试套件(和覆盖范围)。
    • 解决任何问题
  • 在根__init__.py文件中添加注释,指出您的代码使用哪个Django版本(这将为您节省大量时间: - )
  • 将您的主干合并到您的升级分支(以获取您在升级时发生的所有更改)。
  • 运行您的测试套件,修复任何问题,然后签入合并。
  • 最后:将升级分支重新集成到主干中。

现在您已经升级了代码(您仍然需要计划升级的部署,但这是另一个问题)。

ps:我们将Django存储在我们的VCS中,这样我们就可以跟踪我们需要对Django本身做出的任何更改(特别是如果你不想去1.4,但是仍然可能需要一个或两个修复)版本)。

答案 1 :(得分:0)

首先在本地做。你肯定会遇到问题,然后相应地改变。我假设你不需要改变你的大部分代码。对于Django,请阅读Django 1.3 release notesDjango 1.4 release notes,并特别注意与以前的Django版本相比已弃用的内容(不仅仅是1.2,因为您可能已经在应用程序中使用了Django 1.0 / 1.1的功能) )。根据我的经验,这些主要是设置的变化和项目结构的一些细微变化。

对于Python 2.4 - > Python 2.7我不能说太多。这取决于你使用了多少旧功能。您将在测试整个应用程序时找到答案。可能没问题。

答案 2 :(得分:0)

如果您正在使用virtualenv,只需使用您想要的django / python版本创建一个新的virtualenv,运行此virtualenv并针对它运行您的测试套件。

顺便说一下,在Django上下文中,您可能需要小心“迁移”这个词。当您对数据库中的表进行更改时,迁移通常是指与South的模型迁移。

答案 3 :(得分:-1)

Python不支持向后兼容性,考虑到从2.4版本迁移到2.7可能会遇到一些问题。