【发布时间】:2010-10-12 10:00:48
【问题描述】:
我们有一个相当简单的基于 Django 的网站来进行 CRUD 操作。我一直在本地进行测试和开发,然后在测试完成后将版本和数据库架构更改检查到实时服务器上。我们最近在发布某些类型的更改时遇到了问题。想象以下事件序列:
- 用户打开一个网络表单
- 网站已更新,要求此表单上有新字段
- 用户提交他们一直在处理的表单
- 服务器返回错误,因为它希望接收在步骤 2 中添加的新字段
其他网站如何处理此类问题?我的想法:
- 在进行更新时使网站脱机。这并不能真正解决问题,因为用户可以在提交之前无限打开 Web 表单,但在一定时间之后有时,任何人都不太可能提交表单。
- 在非常低的流量时间进行自动更新。这并不能真正解决问题,但我们的网站不是那么受欢迎,如果我们在凌晨 3:00 进行更新,我怀疑会有很多用户。这种技术的一个问题是自动更新失败。
- 版本控制表单,以便服务器识别正在提交的旧表单并提供对用户更友好的响应。是否有自动化工具可以帮助解决这个问题?
想法?
【问题讨论】:
-
这个问题——用户在升级过程中提交表单——是否常见到让你难以接受?或者这是一个假设的“可能有一天会发生”的问题?
-
@S.Lott,如果我们不担心极端情况,我们就不会成为优秀的程序员。
-
我认为真正的问题是“什么是升级实时网站的好方法?”
-
如果用户提交了一个添加了必填字段的表单,您是否希望它给他们一个错误并要求填写新字段?否则它显然不是必需的。
-
丹尼尔是对的。您会收到一个表单验证错误,这既是好的也是预期的行为。 AFAICT 提出的用例不是问题。
标签: django deployment schema versioning