当DEBUG = False时,Django给出错误请求(400)
我是django-1.6的新手。 当我用DEBUG = True
运行django服务器时,它运行的很好。 但是,当我在设置文件中将DEBUG
更改为False
时,服务器停止,并在命令提示符处出现以下错误:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
在我将ALLOWED_HOSTS
改为["http://127.0.0.1:8000",]
,在浏览器中出现错误:
Bad Request (400)
是否有可能在没有debugging模式下运行Django?
ALLOWED_HOSTS
列表应该包含完全限定的主机名称 , 而不是 URL。 离开端口和协议。 如果您使用的是127.0.0.1
,我也会将localhost
添加到列表中:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
你也可以用*
来匹配任何主机:
ALLOWED_HOSTS = ['*']
引用文档:
此列表中的值可以是完全限定的名称(例如
'www.example.com'
),在这种情况下,它们将与请求的Host
标头完全匹配(不区分大小写, 不包括端口 )。 以句号开头的值可以用作子域通配符:'.example.com'
将与example.com
,www.example.com
和example.com
任何其他子域匹配。 值'*'
将匹配任何东西; 在这种情况下,你有责任提供你自己的Host
头的validation(也许在一个中间件;如果这样的话,这个中间件必须在MIDDLEWARE_CLASSES
首先列出)。
大胆重视我的 。
您得到的状态400响应是由于您的主机标头与该列表中的任何值不匹配时引发的SuspiciousOperation
exception 。
我有同样的问题,我解决了inputALLOWED_HOSTS = ['*'],并解决了静态图像的问题,你必须改变环境configuration中的虚拟path,如下所示:
虚拟path 目录
/ static / / opt / python / current / app / yourpj / static /
/ media / / opt / python / current / app / Nuevo / media /
我希望它可以帮助你。
PD:对不起我英文不好。
对于我来说,我没有把USE_X_FORWARDED_HOST
设置为true来得到这个错误。 从文档:
只有在设置此标题的代理正在使用时才能启用。
我的托pipe服务在他们的文档中写明了必须使用这个设置,如果我忘记了这个错误,我会得到这个错误。
在DEBUG = False
的设置文件中,还需要设置ALLOWED_HOST列表。 尝试包括ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']
否则,您可能会收到来自django的错误请求(400)错误。
导航到设置并findbase.py文件将允许的主机设置为ALLOWED_HOSTS = ['*']