使用开发服务器,它适用于debug = True或False。
在生产中,如果debug = True,一切正常,但如果debug = False,我得到500错误,apache日志以导入错误结束:“ImportError:无法导入名称Project”。
导入中的任何内容都不会对调试产生任何影响 - 唯一的代码是开发服务器是否应该提供静态文件(在生产中,apache应该处理这个 - 并且这是单独测试并且工作正常)。
答案 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引发错误。