CommandError:您必须设置设置。如果DEBUG为False,则必须设置ALLOWED_HOSTS


109

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

DEBUG = True

我将DEBUG设置为False,但是当我时runserver,出现以下错误:

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

我尝试设置,ALLOWED_HOSTS = ['127.0.0.1', 'localhost']但出现相同的错误。

有人知道如何解决吗?


检查是否在下面再次定义了DEBUG = True。这可能只是不好的复制粘贴。我到达这里是因为我意外取消了DEBUG = False
Tms91

Answers:


153

尝试

ALLOWED_HOSTS = ['*']

如果您没有通过防火墙或不在公共局域网上,则安全性较差,但这是我所使用的并且有效。

编辑:有趣的是,即使在时,我也需要将其添加到我的1.8个项目中DEBUG = True。非常不确定为什么。

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


为了不浪费代码,我应该在哪里正确放置代码?
МалъСкрылевъ

4
不要grep ALLOWED_HOSTS . -ri在你的项目的头文件夹中找到正确的文件。在这种情况下,它是settings.py,但是grepping始终是个好建议。
Harald Nordgren '16

我应该在哪个文件中写这个?
蒙娜·贾拉

@MonaJalal,请参阅Harald的评论。
凯·罗素

1
根据[Django docs] [1],已对的行为进行ALLOWED_HOSTS了修改,以解决DNS重新绑定攻击,并且今后可能有必要这样做。[1]:docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell

55

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

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '111.222.333.444', 'mywebsite.com']

要满足的条件是主机标头(X-Forwarded-Host如果USE_X_FORWARDED_HOST已启用)应与中的值之一匹配ALLOWED_HOSTS


2
配置完之后,良好的旧重启对我
有用

28

确保在settings.py中再次将其重新定义。默认设置为:

ALLOWED_HOSTS = []


1
错误消息msg导致无法找到该错误。感谢您的发布。
scharfmn '16




-8

只需简单地注释掉以下行:ALLOWED_HOSTS = [...]


如果发表评论,怎么知道重定向到哪里?
cdrrr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.