当debug = True时,当debug = False时,什么可能导致Django错误

时间:2011-02-11 15:01:05

标签: python django apache debugging importerror

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

在生产中,如果debug = True,一切正常,但如果debug = False,我得到500错误,apache日志以导入错误结束:“ImportError:无法导入名称Project”。

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

4 个答案:

答案 0 :(得分:76)

就是说,我今天遇到了类似的错误,因为Django 1.5在设置中需要ALLOWED_HOSTS参数。 您只需要放置此行以使其工作;)

...
ALLOWED_HOSTS = '*'
...

但是,请注意您需要根据实际主机(https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts)正确设置此参数!

  

此列表中的值可以是完全限定名称(例如“www.example.com”),在这种情况下,它们将与请求的主机标头完全匹配(不区分大小写,不包括端口)。以句点开头的值可用作子域通配符:'。example.com'将匹配example.com,www.example.com和example.com的任何其他子域。值'*'将匹配任何内容;在这种情况下,您有责任提供自己的Host头验证(可能在中间件中;如果是这样,则必须首先在MIDDLEWARE_CLASSES中列出此中间件)。

所以基本上你最好在生产中使用这种类型的配置:

...
ALLOWED_HOSTS = [
    '.yourdomain.com',
]
...

感谢gertvdijk指出了这一点

答案 1 :(得分:7)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我也有这个问题。虽然它甚至在设置Allowed_hosts并且已经拥有404和500模板时仍然存在。

我还检查过循环导入,但事实并非如此。

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

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

由于某种原因,没有使用Debug True或False引发错误。