所以我从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?
答案 0 :(得分:2)
如果您使用默认的database-backed sessions,那么对旧后端的引用将存储在django_session
表中,而用户的cookie只是对数据库中行的引用。在这种情况下,您可以通过删除数据库中的所有会话数据来防止错误。
在执行此操作之前,请仔细考虑。您可能不想删除所有会话数据 - 例如,它会注销所有用户。
答案 1 :(得分:0)
我认为你不能把这归咎于饼干。请使用精细的梳子再次检查您的代码并查找site.app.backends
的来电。
如果您可以从崩溃中访问一个调用堆栈,它将告诉您确切的位置。