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.


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']


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.


-8

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


Если прокомментируете, как узнаете, куда перенаправить?
cdrrr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.