从1.3升级到1.4时导致django崩溃的cookie

时间:2013-01-14 10:11:01

标签: django

所以我从django 1.3升级到1.4,一切顺利。然而,一些用户只是得到一个Internal Server Error,由nginx抛出,通常是在服务器崩溃时。

调查显示这是饼干的问题。日志中的错误是:

ImproperlyConfigured: Error importing authentication backend
  site.app.backends.EmailModelBackend: "No module named site.app.backends"

这是因为在升级过程中我重新组织了我的项目,而这个特定的后端现在位于app.backends而不是site.app.backends。很明显,这些信息被硬编码到auth cookie中,这导致了问题。

有没有办法解决这个问题,除非通过电子邮件发送用户并告诉他们清除他们的cookie?

2 个答案:

答案 0 :(得分:2)

如果您使用默认的database-backed sessions,那么对旧后端的引用将存储在django_session表中,而用户的cookie只是对数据库中行的引用。在这种情况下,您可以通过删除数据库中的所有会话数据来防止错误。

在执行此操作之前,请仔细考虑。您可能不想删除所有会话数据 - 例如,它会注销所有用户。

答案 1 :(得分:0)

我认为你不能把这归咎于饼干。请使用精细的梳子再次检查您的代码并查找site.app.backends的来电。

如果您可以从崩溃中访问一个调用堆栈,它将告诉您确切的位置。