使用最新版本创建新站点或使用旧版本[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用最新版本创建新站点或使用旧版本[关闭]相关的知识,希望对你有一定的参考价值。

我正在处理的项目基于Django 1.4,实际上我无法对其进行更改/更新。

我必须使用API​​来修改该站点上的数据。

我以为我会使用Django Rest Framework来做到这一点。

如果我使用Django 3.X和最新版本的DRF(使用与最旧站点相同的数据库)从头开始创建新站点,将会出现问题吗?

我的意思是,如果通过在新站点上使用API​​来更改数据库中的数据,那么这也将在“旧”数据库上进行更改吗?

另一方面,我可以继续在“旧”站点上工作,并使用旧版本的DRF,但这些版本不完整,文档较少且安全性较低。

非常感谢

答案

听起来这是一个很好的机会,可以启动一个迁移项目到受支持的安全版本的Django。 始终使用LTS版本:2.2是最新的LTS版本,但尚未发布3.x。

您将需要从旧应用程序复制模型,并设置managed = False ,访问与旧项目相同的数据库,以使用新的API修改数据。

一旦您的API可以处理网站所需的所有功能,迁移整个网站将非常容易。

请注意以下几点:

  • 在新项目中的模型需要使用相同的数据库表和列,具有相同的字段类型。 但是只要您随后指定db_column (在字段上)和db_table (在模型上)以让Django知道,只要您再命名实际的模型和字段(如果您觉得旧项目使用的是“错误的”命名约定),就不会阻止您重命名实际的模型和字段。映射到现有数据库。
  • 您可以将新模型和表添加到现有数据库中(使用managed = True ),而不会影响旧应用程序。

如果在某个阶段需要修改现有表:

  • 然后,您可能会考虑切换到managed = True (并将您的旧应用程序更改为managed = False ),确保在此之前,您已经从数据库中清除了迁移表,然后使用fake集运行迁移(以便实际上没有迁移任何东西)。 如果旧的应用程序不再维护,我会这样做。
  • 如果旧的应用程序仍然得以维护,则将更加棘手。 您可能必须直接在SQL中更改数据库。
  • 不会影响旧应用程序的更改:添加新列。
  • 会影响旧应用程序的更改:限制约束,添加约束或更改数据类型的所有操作。
  • 可能影响旧应用程序的更改:约束松动。 这不会影响数据库中的现有数据,但可能会使希望以某种格式的数据的旧应用程序的验证程序失效,并为新数据获取“无效”数据。

以上是关于使用最新版本创建新站点或使用旧版本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何部署旧版本

GD 无法创建 JPG

如何控制 PWA 是使用缓存版本还是获取最新版本?

facebook 旧版本是不是适用于新功能? [关闭]

我的 MainActivity 在使用 android 旧版本(例如 oreo)时滞后,但在最新版本中运行良好,如何解决?

即使我从 Google Play 安装了最新版本,在 android 7 应用程序上仍使用旧版本的 WebView