我应该尝试实际升级我现有的应用程序,还是只是从头开始重写它,保存哪些部分(模板等)?
答案 0 :(得分:6)
虽然这取决于你正在做什么,但大多数应用程序应该只能升级然后修复所有破坏的东西。根据我的经验,升级后我必须解决的主要问题是
使用模型更改某些时髦的东西,例如以下外键的语法。
一小组模板更改,最明显的是自动转义。
任何取决于Django内部结构的具体结构。这不应该是一个问题,除非你正在做一些事情,比如动态修改Django内部,以一种对项目必要/方便的方式改变他们的行为。
总而言之,除非你做了很多非常奇怪和/或复杂的事情,否则简单升级应该相对轻松,只需要做一些改动。
答案 1 :(得分:3)
升级。对我来说非常简单:将__str__()
更改为__unicode__()
,编写基本admin.py
,然后完成。只需开始在1.0上运行您的应用,测试它,当您遇到错误时,请使用backwards-incompatible changes上的文档来了解如何解决问题。
答案 2 :(得分:2)
只需升级您的应用。从0.96到1.0的转换是巨大的,但就向后不兼容的变化而言,我怀疑你的应用程序甚至有10%。
我在Django 1.0之前就在主干上,所以我对我的过渡是随着时间的推移,但即便如此,我必须改变的唯一主要事情是newforms,newforms-admin, str ()到 unicode ()和maxlength到max_length
其他大多数更改都是新功能或后端重写,或者正在构建基本网站的人甚至没有接近。
答案 3 :(得分:1)
只有最简单的网站才能轻松升级。
如果您的网站恰好是非ASCII 世界的一部分,那么期待真正的痛苦(阅读:美国和英国以外的任何地方)。 Django中最痛苦的变化是在内部从字节串切换到unicode对象 - 现在你必须找到你使用字节串的所有地方并将其改为unicode。最糟糕的情况是模板渲染,你永远不会知道你忘记改变一个变量,直到你得到UnicodeError。
其他值得注意的事情:操纵者( oldforms )已经消失,除了用表格( newforms )重写所有部分之外别无他法。
如果这是你的情况并且你的项目大于2-3个应用程序,我会非常不愿意升级,直到真的有必要。
答案 4 :(得分:1)
我们在一个多步骤的过程中升级,我对此非常满意。问题中的应用程序大约是100.000 LoC并运行几个核心业务功能,与遗留系统接口很多。我们这样工作:
整个过程花费了大约6个月的时间,我们在服务器上运行遗留生产分支,同时将另一个分支移植到1.0。在这样做的同时,我们还在为生产分支添加功能。
最终的合并比预期的要简单得多,并且需要大约一个星期才能完成4个编码器的合并,审查,测试和修复。然后我们推出了大约一个星期的时间,被先前出乎意料的错误所困扰。
总而言之,我对结果非常满意。我们现在有更好的代码库用于进一步开发。