当DEBUG = False时,Django给出Bad Request (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吗?

161437 次浏览

ALLOWED_HOSTS列表应该包含完全限定的主机名 url。忽略端口和协议。如果你正在使用127.0.0.1,我也会添加localhost到列表中:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

你也可以使用*来匹配任何主机:

ALLOWED_HOSTS = ['*']

引用文档:

该列表中的值可以是完全限定的名称(例如'www.example.com'),在这种情况下,它们将精确匹配针对请求的Host头文件(不区分大小写,Host0)。以句点开头的值可以用作子域通配符:'.example.com'将匹配example.comwww.example.comexample.com的任何其他子域。'*'的值将匹配任何值;在这种情况下,你有责任提供自己的Host头的验证(可能在中间件中;如果是这样,这个中间件必须在MIDDLEWARE_CLASSES中首先列出)。

大胆强调地雷

你得到的状态400响应是由于当你的主机头不匹配该列表中的任何值时引发了SuspiciousOperation例外

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

< >强劲的虚拟路径 ,,,,,,,,,,,,,,, 目录 < br > < br > 静态/,,,,,,,,,,,,,,,,,,,,,,,,,,/ opt / python /电流/ app / yourpj /静态/ < br > /媒体/,,,,,,,,,,,,,,,,,,,,,,/ opt / python /经常/ app /新/媒体/ < br > < / p >

我希望这对你有所帮助。

抱歉我的英语不好。

对于我来说,我没有将USE_X_FORWARDED_HOST设置为true就得到了这个错误。从文档中可以看出:

只有当设置此报头的代理正在使用时,才应该启用该选项。

我的托管服务写了明确地在他们的文档中使用这个设置必须,如果我忘记它,我会得到这个400错误。

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

否则你可能会收到来自django的Bad Request(400)错误。

我也有同样的问题,但没有一个答案能解决我的问题。为了解决这种情况,最好通过临时向settings.py添加以下配置来启用日志记录。

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/tmp/debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}

当您发现问题时,处理起来比盲目调试要容易得多。

我的问题是:

无效的HTTP_HOST头:'pt_web:8000'。根据RFC 1034/1035,提供的域名无效。

我通过在Nginx配置文件中添加proxy_set_header Host $host;来解决这个问题,并在settings.py中启用USE_X_FORWARDED_PORT = True端口转发(这是因为在我的情况下,我在Nginx端口8080上侦听请求,并在端口8000上传递给guni)。

对于我来说,我已经在127.0.0.1上安装了xampp,在127.0.1.1上安装了django 我一直尝试添加主机

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.yourdomain.com', '*', '127.0.1.1']

和我得到了相同的错误或(400)坏请求 enter image description here

所以我把url改为127.0.1.1:(使用的端口)/项目 瞧!

你必须检查你的虚拟网络地址是什么,对我来说,因为我在Linux上使用bitnami django stack 2.2.3-1,我可以检查django正在使用的端口。 如果你有一个错误(400坏请求),那么我猜django在不同的虚拟网络.. 祝你好运 enter image description here

试着用--insecure标志运行你的服务器,就像这样:

python manage.py runserver --insecure

我必须先停止apache服务器。

(f.e. sudo systemctl stop httpd.service / sudo systemctl disable httpd.service)。

这解决了我的问题,除了编辑“settings.py”文件

ALLOWED_HOSTS = ['se.rv.er.ip', 'www.example.com']

在项目的settings.py中,检查第28行,其中是允许主机

settings.py


ALLOWED_HOSTS = ['IP', 'servidor', ]

您必须输入IP和您使用的服务器,本地或web级别 settings.py < / p >

ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.ejemplo.com']

ALLOWED_HOSTS = ['*']
< p > manage.py collectstatic试试。 我在更新后丢失了一个静态文件,因此错误的请求