当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.comwww.example.comexample.com任何其他子域匹配。 值'*'将匹配任何东西; 在这种情况下,你有责任提供你自己的Host头的validation(也许在一个中间件;如果这样的话,这个中间件必须在MIDDLEWARE_CLASSES首先列出)。

大胆重视我的

您得到的状态400响应是由于您的主机标头与该列表中的任何值不匹配时引发的SuspiciousOperationexception 。

我有同样的问题,我解决了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 = ['*']