python requests 400错误,关于python: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中添加http或https

ALLOWED_HOSTS列表应包含标准主机名,而不是URL。省略端口和协议。如果您使用的是127.0.0.1,我也会在列表中添加localhost:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

您还可以使用*匹配任何主机:

ALLOWED_HOSTS = ['*']

引用文档:

Values in this list can be fully qualified names (e.g. 'www.example.com'), in which case they will be matched against the request’s Host header exactly (case-insensitive, not including port). A value beginning with a period can be used as a subdomain wildcard: '.example.com' will match example.com, www.example.com, and any other subdomain of example.com. A value of '*' will match anything; in this case you are responsible to provide your own validation of the Host header (perhaps in a middleware; if so this middleware must be listed first in MIDDLEWARE_CLASSES).

大胆强调我的。

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

谢谢,它的工作原理,但是当我设置为False时,一个问题来了,因为所有静态文件都显示为404。我不明白为什么找不到它

@MegaBytes:对不起,我不知道那可能是什么。

您能建议我如何做吗,因为我的项目正在进行生产。

再说一次,我什至不知道您将False设置为什么。也许您可以发布一个新问题?

@MegaBytes当DEBUG为False时,所有静态文件都由STATIC_ROOT提供,因此.manage.py collectstatic可能会起作用。

我一直试图弄清楚为什么我的健康检查将近400天在AWS上出现400个错误-答案就是解决方案。五年后,但非常感谢!

对我来说,我没有将USE_X_FORWARDED_HOST设置为true来得到此错误。从文档:

This should only be enabled if a proxy which sets this header is in use.

我的托管服务在他们的文档中明确指出必须使用此设置,如果我忘记了此设置,则会收到此400错误。

如果ALLOWED_HOSTS = [*],这是否必要?

我认为ALLOWED_HOSTS会阻止整个主机。 USE_X_FORWARDED_HOST仅确定是否使用HTTP标头。

我遇到了同样的问题,并通过设置ALLOWED_HOSTS = ['*']进行了修复,并且要解决静态图像的问题,您必须像这样更改环境配置中的虚拟路径:

虚拟路径

目录

/ static // opt / python / current / app / yourpj / static /

/ media / / opt / python / current / app / Nuevo / media /

希望对您有帮助。

PD:对不起,我的英语不好。

我遇到了同样的问题,没有一个答案可以解决我的问题,为解决这种情况,最好通过将以下配置添加到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, }, }, }

并尝试tail -f /tmp/debug.log。

当您看到问题时,比盲目调试要容易得多。

我的问题即将

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

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

感谢分享。对于我在prod中的情况,添加LOGGING = ...之后,我会看到错误" ValueError:缺少... css的静态文件清单条目"。然后我使用@ Blackeagle52提到的" python manager.py collectstatic",解决了500错误(在我的本地dev中也可能是400错误)。

尝试使用--insecure运行服务器,如下所示:

python manage.py runserver-不安全

对我来说,因为我已经在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)错误的请求

50c99a158a0ce0ac4309c24bc00df352.png

所以我将URL更改为127.0.1.1 :(使用的端口)/项目

和瞧!

您必须检查您的虚拟网络地址是什么,对我来说,因为我在Linux上使用bitnami django堆栈2.2.3-1,所以我可以检查django使用的端口。

如果您有一个错误(400错误的请求),那么我猜django在不同的虚拟网络上..

祝好运

5f6db4ccb43310b20a7c9400bc571487.png

在设置文件中使用DEBUG = False时,还需要设置ALLOWED_HOST列表。

尝试包含ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']

否则,您可能会收到来自django的Bad Request(400)错误消息。

导航到设置并找到base.py文件

将允许的主机设置为

ALLOWED_HOSTS = ['*']

不要重复接受的答案。删除它以保持论坛清洁

不要这样回答,请发表评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值