Django DEBUG=False 导致所有请求出现 400 错误

Posted

技术标签:

【中文标题】Django DEBUG=False 导致所有请求出现 400 错误【英文标题】:Django DEBUG=False resulting in 400 error for all requests 【发布时间】:2018-01-07 18:17:34 【问题描述】:

我在 Docker 容器中运行我的 Django 应用程序,其中 nginx 作为网络服务器,uWSGI 作为应用程序服务器。一切都部署在 AWS Elastic Beanstalk 上。当我设置DEBUG=False 时,所有请求都会导致Bad Request (400)。我已经尝试了ALLOWED_HOSTS='*'ALLOWED_HOSTS=['*'],但我仍然得到同样的错误。我通过检查日志验证了请求是否到达 uWSGI。 uWSGI 日志有这样的:

[pid: 33|app: 0|req: 4/4] 172.17.0.1 () 46 vars in 855 bytes [Tue Aug  1 02:54:17 2017] GET / => generated 26 bytes in 26 msecs (HTTP/1.1 400) 1 headers in 53 bytes (1 switches on core 0)

我尝试了很多答案,但没有运气。我试过this answer,但我仍然得到同样的错误。还有什么可能导致这种情况的吗?

这个问题与this question 不同,因为正如我所提到的,将ALLOWED_HOSTS 设置为通配符对我不起作用。同一个问题,我也试过this answer,还是报同样的错误。

【问题讨论】:

请管理员/某人删除这是重复的标签吗?我注意到我在创建问题时已经尝试了假定重复问题中指定的解决方案,并且仅在出现提示时才澄清它。 【参考方案1】:

问题是我的 URL 有下划线,而 Django 不允许在 URL 的任何地方使用下划线。我有www._test_.example.comwww._test.example.comwww.a_test.example.com 也不起作用。 Underscores should be valid characters in URLs.

【讨论】:

以上是关于Django DEBUG=False 导致所有请求出现 400 错误的主要内容,如果未能解决你的问题,请参考以下文章

当 debug=False 时可能导致 Django 错误,而当 debug=True 时不存在

生产中的 Django:设置 DEBUG = False 导致“服务器错误(500)”

Django 错误请求 (400) 调试=假

使用 DEBUG 设置为 False 记录 Django SQL 查询

即使配置了 Allowed_Host = ['localhost','127.0.0.1'],Django Debug = False 也会返回错误请求

debug = False 时出现错误请求 400