CommandError:如果DEBUG为False,则必须设置settings.ALLOWED_HOSTS

Ran*_*cho 92 django

我在程序txsite中使用Django 1.6.5进行设置:

DEBUG = True
Run Code Online (Sandbox Code Playgroud)

我将DEBUG设置为False,但是当我runserver,我得到以下错误:

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
Run Code Online (Sandbox Code Playgroud)

我试过设置,ALLOWED_HOSTS = ['127.0.0.1', 'localhost']但我得到了同样的错误.

有谁知道怎么弄清楚?

Kye*_*e R 133

尝试

ALLOWED_HOSTS = ['*']
Run Code Online (Sandbox Code Playgroud)

如果你没有防火墙或在公共局域网上安全性较低,但这是我使用的,它的工作原理.

编辑:有趣的是,我一直需要将其添加到我的1.8项目中的一些项目,即使这样DEBUG = True.很不确定为什么.

编辑:这是由于我的评论中提到的Django安全更新.

  • 根据 [Django 文档][1],“ALLOWED_HOSTS”的行为已被修改以解决 DNS 重新绑定攻击,这可能是必要的。[1]:https://docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts (3认同)
  • 做'grep ALLOWED_HOSTS.-ri`在项目的head文件夹中找到正确的文件.在这种情况下,它是settings.py,但grepping总是很好的建议. (2认同)

yea*_*ske 49

您的解决方案可能是添加原始IP和/或主机名:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '111.222.333.444', 'mywebsite.com']
Run Code Online (Sandbox Code Playgroud)

基本上,主机头(或者X-Forwarded-Host如果USE_X_FORWARDED_HOST已启用)应与其中一个值匹配ALLOWED_HOSTS.

  • 配置完成后,旧的重启对我有用...... (2认同)

Mat*_*att 24

确保在settings.py中没有再次重新定义它.默认设置包括:

ALLOWED_HOSTS = []


小智 14

来自文档:https: //docs.djangoproject.com/en/1.10/ref/settings/

如果DEBUG为False,则还需要正确设置ALLOWED_HOSTS设置.如果不这样做,将导致所有请求被返回为"错误请求(400)".

从这里:https://docs.djangoproject.com/en/1.10/ref/settings/#std : setting-ALLOWED_HOSTS

我使用的是这样的东西:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
Run Code Online (Sandbox Code Playgroud)


小智 5

用这个:

ALLOWED_HOSTS =  ['localhost', '127.0.0.1']
Run Code Online (Sandbox Code Playgroud)