使用开发服务器,它适用于 debug=True 或 False。
在生产中,如果 debug=True,一切正常,但如果 debug=False,我会收到 500 错误,并且 apache 日志以导入错误结尾:“ImportError: cannot import name Project”。
导入中的任何内容都没有以调试为条件 - 唯一的代码是开发服务器是否应该提供静态文件(在生产中,apache 应该处理这个 - 并且这是单独测试并且工作正常)。
使用开发服务器,它适用于 debug=True 或 False。
在生产中,如果 debug=True,一切正常,但如果 debug=False,我会收到 500 错误,并且 apache 日志以导入错误结尾:“ImportError: cannot import name Project”。
导入中的任何内容都没有以调试为条件 - 唯一的代码是开发服务器是否应该提供静态文件(在生产中,apache 应该处理这个 - 并且这是单独测试并且工作正常)。
只是说,我今天遇到了类似的错误,这是因为 Django 1.5 需要ALLOWED_HOSTS
设置中的参数。您只需要放置此行即可使其工作;)
...
ALLOWED_HOSTS = '*'
...
但是,请注意,您需要根据您的实际主机(https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts)正确设置此参数!
此列表中的值可以是完全限定名称(例如 'www.example.com'),在这种情况下,它们将与请求的 Host 标头完全匹配(不区分大小写,不包括端口)。以句点开头的值可用作子域通配符:“.example.com”将匹配 example.com、www.example.com 和 example.com 的任何其他子域。'*' 的值将匹配任何内容;在这种情况下,您有责任提供自己对 Host 标头的验证(可能在中间件中;如果是这样,则此中间件必须首先在 MIDDLEWARE_CLASSES 中列出)。
所以基本上,一旦你投入生产,最好使用这种类型的配置:
...
ALLOWED_HOSTS = [
'.yourdomain.com',
]
...
感谢gertvdijk指出这一点
如果您在其中一个文件中有循环导入,则会发生这种情况。检查并查看您是否正在从 Project 中导入某些内容,然后从最初导入 Project 的原始文件中导入 Project 中的某些内容。
我最近遇到了同样的问题,重新安排我的一些导入有助于解决这个问题。
如果您没有同时存在 500.html 和 404.html 模板,也会发生这种情况。仅 500 还不够好,即使对于不会产生 404 的 URI 也是如此!
我也有这个问题。尽管即使在设置 Allowed_hosts 并且已经拥有 404 和 500 个模板时它仍然存在。
我还检查了循环进口,但事实并非如此。
我终于让 django 生成了一个日志文件,https://stackoverflow.com/a/15100463/1577916
我不小心留下了一个“get_host”函数,该函数现在存在于 Django 1.5 的 HttpRequest(更改为 HttpRequest.get_host())下。
出于某种原因,没有引发 Debug True OR False 错误。