当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)

没有调试模式可以运行Django吗?

回答:

ALLOWED_HOSTS list应包含完全限定的host names网址。留出端口和协议。如果您使用127.0.0.1,我也会将localhost添加到列表中:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

您也可以使用*来匹配any主机:

ALLOWED_HOSTS = ['*']

引用文档:

此列表中的值可以是完全限定名称(例如'www.example.com'),在这种情况下,它们将完全匹配反对请求(不区分大小写,不包括港口)。以周期开头的值可以用作子域通配符:'.example.com'将匹配example.comwww.example.comexample.com的任何其他子域。值'*'将匹配任何内容;在这种情况下,您有责任提供自己对Host头文件的验证(也许在一个中间件中);如果是这样,这个中间件必须首先在MIDDLEWARE_CLASSES中列出)。

 Bold emphasis mine
您获得的状态400响应是由于当您的主机头与该列表中的任何值不匹配时引发SuspiciousOperation exception

 
 Code问答: codewenda.com
Stackoverflow:Django gives Bad Request (400) when DEBUG = False

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 3 = 4