16

使用开发服务器,它适用于 debug=True 或 False。

在生产中,如果 debug=True,一切正常,但如果 debug=False,我会收到 500 错误,并且 apache 日志以导入错误结尾:“ImportError: cannot import name Project”。

导入中的任何内容都没有以调试为条件 - 唯一的代码是开发服务器是否应该提供静态文件(在生产中,apache 应该处理这个 - 并且这是单独测试并且工作正常)。

4

4 回答 4

75

只是说,我今天遇到了类似的错误,这是因为 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指出这一点

于 2013-03-11T10:14:06.827 回答
7

如果您在其中一个文件中有循环导入,则会发生这种情况。检查并查看您是否正在从 Project 中导入某些内容,然后从最初导入 Project 的原始文件中导入 Project 中的某些内容。

我最近遇到了同样的问题,重新安排我的一些导入有助于解决这个问题。

于 2011-02-11T23:49:42.303 回答
1

如果您没有同时存在 500.html 和 404.html 模板,也会发生这种情况。仅 500 还不够好,即使对于不会产生 404 的 URI 也是如此!

于 2012-08-17T03:31:09.840 回答
1

我也有这个问题。尽管即使在设置 Allowed_hosts 并且已经拥有 404 和 500 个模板时它仍然存在。

我还检查了循环进口,但事实并非如此。

我终于让 django 生成了一个日志文件,https://stackoverflow.com/a/15100463/1577916

我不小心留下了一个“get_host”函数,该函数现在存在于 Django 1.5 的 HttpRequest(更改为 HttpRequest.get_host())下。

出于某种原因,没有引发 Debug True OR False 错误。

于 2013-05-08T19:24:17.320 回答