CommandError: необходимо установить settings.ALLOWED_HOSTS, если DEBUG имеет значение False

109

Я использую Django 1.6.5 в своей программе txsite с настройками:

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,

Ответы:

155

Пытаться

ALLOWED_HOSTS = ['*']

Менее безопасен, если вы не изолированы от брандмауэра или не находитесь в общедоступной локальной сети, но это то, что я использую, и это работает.

РЕДАКТИРОВАТЬ: Интересно, что мне нужно было добавить это в несколько моих проектов 1.8, даже когда DEBUG = True. Очень не знаю почему.

РЕДАКТИРОВАТЬ: это связано с обновлением безопасности Django, как упоминалось в моем комментарии.

Кай Рассел
источник
Куда правильно поставить код, чтобы не тратить его зря?
Малъ Скрылевъ
4
Сделайте это grep ALLOWED_HOSTS . -riв папке head вашего проекта, чтобы найти правильный файл. В данном случае это settings.py, но grepping всегда будет хорошим советом.
Харальд Нордгрен,
в какой файл мне это записать?
Мона Джалал,
@MonaJalal, пожалуйста, смотрите комментарий Харальда.
Кай Рассел,
1
Согласно [Django docs] [1], поведение ALLOWED_HOSTSбыло изменено для защиты от атаки повторного связывания DNS, и это, вероятно, необходимо в будущем. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Кай Рассел,
55

Решением может быть добавление исходного IP-адреса и / или имени хоста:

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

Условие, которое должно быть выполнено, - это то, что заголовок хоста (или X-Forwarded-Hostесли USE_X_FORWARDED_HOSTон включен) должен соответствовать одному из значений в ALLOWED_HOSTS.

yeaske
источник
2
После настройки у меня сработал старый добрый перезапуск ...
Разаман
28

Убедитесь, что он не переопределен снова в вашем settings.py. Настройки по умолчанию:

ALLOWED_HOSTS = []

Мэтт
источник
1
Сообщение об ошибке уводит от поиска этого. Спасибо за публикацию.
scharfmn 08
15

Из документации: 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']
Memória de Cálculo
источник
4

Просто сделай это:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Это сделает свое дело.

Фахади Мухумуза
источник
1

Если вы работаете PyCharm, проверьте Environmental variablesсвой Django server. Вы должны указать правильный module.settingsфайл

Даниил Чепенко
источник
0

Пытаться

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']

Значение '*' будет соответствовать чему угодно; в этом случае вы несете ответственность за собственную проверку заголовка Host.

Srimanivinay
источник
-8

Просто закомментируйте строку: ALLOWED_HOSTS = [...]

user3797826
источник
Если прокомментируете, как узнаете, куда перенаправить?
cdrrr