0

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

对此进行调查表明这是 cookie 的问题。日志中的错误是:

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

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

除了向用户发送电子邮件并告诉他们清除 cookie 之外,还有什么方法可以解决这个问题?

4

2 回答 2

2

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

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

于 2013-01-14T11:13:55.897 回答
0

我不认为你可以把这归咎于饼干。请用细齿梳子再次检查您的代码,并寻找对site.app.backends.

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

于 2013-01-14T10:46:47.960 回答