我正在使用Django 1.6.5,并配置了以下设置:
DEBUG = True
当我将DEBUG = False
并运行manage.py runserver
时,我会收到以下错误:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
我使用以下设置时出现相同的错误:ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
我该怎么修复这个问题?
我正在使用Django 1.6.5,并配置了以下设置:
DEBUG = True
当我将DEBUG = False
并运行manage.py runserver
时,我会收到以下错误:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
我使用以下设置时出现相同的错误:ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
我该怎么修复这个问题?
尝试
ALLOWED_HOSTS = ['*']
如果您没有防火墙或在公共局域网上,则安全性较低,但这是我使用的方法,而且它有效。
编辑:有趣的是,即使DEBUG = True
,我也需要将其添加到我的几个1.8项目中。非常不确定为什么。
编辑:这是由于Django安全更新所致,如我的评论中所述。
grep ALLOWED_HOSTS . -ri
,以查找正确的文件。在这种情况下,它是settings.py,但建议始终使用grep命令。 - Harald NordgrenALLOWED_HOSTS
的行为已被修改以解决DNS重新绑定攻击,这可能是未来必要的。 - Kye你的解决方案可能是添加原始IP和/或主机名:
ALLOWED_HOSTS = [
'localhost',
'127.0.0.1',
'111.222.333.444',
'mywebsite.example']
需要满足的条件是主机头(如果启用了USE_X_FORWARDED_HOST
,则为X-Forwarded-Host
)应该与ALLOWED_HOSTS
中的一个值匹配。
确保它没有在settings.py文件的后面被重新定义。默认设置如下:
ALLOWED_HOSTS = []
根据文档:https://docs.djangoproject.com/en/1.10/ref/settings/
如果 DEBUG 为 False,您还需要正确设置 ALLOWED_HOSTS。否则,未能这样做将导致所有请求都返回“Bad Request (400)”。
并且从这里获取更多信息:https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS
我正在使用类似于此的内容:
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
如果你在使用 PyCharm
,请检查你的 Django 服务器
的 环境变量
。你需要指定正确的 module.settings
文件。
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
我也遇到了同样的错误,并发现这是由于设置文件配置更改导致的。您需要按照以下方式配置一些内容。
请尝试:
在settings.py中
ALLOWED_HOSTS = ['*']
在manage.py中
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your-project-name>.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your-project-name>.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your-project-name>.settings')
settings.py
拆分成base.py
和development.py
并放在一个名为settings的文件夹中。它看起来像这样:<name-of-your-project-app>/
├── __init__.py
├── asgi.py
├── settings
│ ├── __init__.py
│ ├── base.py
│ └── development.py
├── urls.py
└── wsgi.py
python manage.py runserver
没有识别任何设置。export DJANGO_SETTINGS_MODULE=decoupled_dj.settings.development
我认为这告诉Django,“嘿,去找我的设置文件development.py”。