当前位置: 首页 > 知识库问答 >
问题:

当DEBUG=False时,Django发出错误的请求(400)

胡意致
2023-03-14

我是django-1.6的新手。当我使用DEBUG=True运行django服务器时,它运行得非常好。但是,当我在设置文件中将DEBUG更改为False时,服务器停止运行,并在命令提示下出现以下错误:

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

我将允许的\u主机更改为[”http://127.0.0.1:8000“,]”,在浏览器中我得到错误信息:

Bad Request (400)

是否可以在没有调试模式的情况下运行Django?

共有3个答案

万俟炯
2023-03-14

我也有同样的问题,没有一个答案能解决我的问题。为了解决这种情况,最好通过在设置中添加以下配置来启用日志记录。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_主机头:“pt_web:8000”。根据RFC 1034/1035,提供的域名无效。

我通过添加proxy\u set\u header Host$Host解决了这个问题到Nginx配置文件,并在设置中使用_X_FORWARDED_port=True启用端口转发。py(这是因为在我的情况下,我在Nginx端口上侦听请求8080,并在端口8000上传递到guni)。

长孙硕
2023-03-14

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

仅当设置此标头的代理正在使用时,才应启用此选项。

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

阙奇思
2023-03-14

ALLOWED_HOSTS列表应包含完全限定的主机名,而不是URL。省略端口和协议。如果您使用的是127.0。0.1,我也会将localhost添加到列表中:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

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

ALLOWED_HOSTS = ['*']

引用文件:

此列表中的值可以是完全限定名(例如'www.example.com'),在这种情况下,它们将与请求的主机头完全匹配(不区分大小写,不包括端口)。以句点开头的值可以用作子域通配符:”。实例com'将匹配示例。comwww.example。com,以及示例的任何其他子域。com“*”的值将匹配任何内容;在这种情况下,您负责提供自己对主机头的验证(可能在中间件中;如果是这样,则必须在中间件类中首先列出该中间件)。

我的。

您得到的status 400响应是由于主机头与该列表中的任何值不匹配时引发的可疑操作异常

 类似资料:
  • 问题内容: 我是django-1.6的新手。当我使用运行django服务器时,它运行良好。但是,当我改变DEBUG到False在设置文件,然后在服务器停止,并让在命令提示符下以下错误: 更改为之后,在浏览器中出现错误: 是否可以在没有调试模式的情况下运行Django? 问题答案: 该ALLOWED_HOSTS列表应包含标准主机名,而不是 URL。省略端口和协议。如果你使用127.0.0.1,我也将

  • 我正在Docker容器中运行我的Django应用程序,其中nginx作为Web服务器,uWSGI作为应用程序服务器。一切都部署在AWS Elastic Beanstalk上。当我设置DEBUG=False时,所有的请求都会导致错误的请求(400)。我尝试了两个和,但仍然出现相同的错误。我通过检查日志来验证请求是否到达uWSGI。uWSGI日志包含以下内容: 我试过很多答案,但都不走运。我试过这个答

  • 我正在尝试使用docker、Nginx和Gunicorn为Django定义一个生产环境,当debug=True时,它可以正常工作,如果我将debug=False,则问题从这里开始会给我错误的请求(400)我的Nginx文件,如下所示: 设置中的my allowed_hosts。py公司 我的gunicorn从入口点执行命令。sh文件: 这是我在docker compose中的nginx容器: my

  • 问题内容: 使用开发服务器,它可以与debug = True或False一起使用。 在生产中,如果debug = True,一切正常,但是如果debug = True,则出现500错误,并且apache日志以导入错误结尾:“ ImportError:无法导入名称Project”。 导入中的任何操作都不会对调试产生任何条件-唯一执行的代码是开发服务器是否应提供静态文件(在生产中,apache应该处理

  • 当我的DEBUG=False时显示“错误:-1”,当我的DEBUG=True时显示“错误:-2”。 我将使用python 3.7.7和django 3.0.4。 我的设置。py文件是:- 这是“错误:1”。。。。[调试=False时] 这是“错误:-2”。。。[调试=True时] 但是在'DEBUG=True'的时候,我的管理页面是打开的,但它在终端中给出了下面的错误。 当我试图在浏览器中打开“/

  • 当我将debug设置为false时,我遇到了“错误请求400”(生产服务器)的问题。我使用cookiecutter和Django 1.8。我设置了-没有任何结果。 在日志中,我有一条消息: 我尝试了django文档中的代码,也没有成功: