python - code 400 message bad request syntax




当DEBUG=False时,Django给出错误请求(400) (4)

我是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)

是否有可能在没有调试模式下运行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头的验证(可能在中间件中;如果是这样的话,该中间件必须首先在MIDDLEWARE_CLASSES列出)。

大胆重视我的

您收到的状态400响应是由于您的主机标头与该列表中的任何值不匹配时引发了SuspiciousOperation异常


DEBUG = False的设置文件中,您还需要设置ALLOWED_HOST列表。 尝试包括ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']

否则,您可能会收到来自django的错误请求(400)错误。


导航至设置并找到base.py文件将允许的主机设置为ALLOWED_HOSTS = ['*']


我有同样的问题,我通过设置ALLOWED_HOSTS = ['*']来解决它,并解决静态图像的问题,你必须改变环境配置中的虚拟路径,如下所示:

虚拟路径 目录

/ static / / opt / python / current / app / yourpj / static /
/ media / / opt / python / current / app / Nuevo / media /

我希望它能帮助你。

PD:对不起我的英文不好。