CommandError: Ви повинні встановити налаштування.ALLOWED_HOSTS, якщо DEBUG невірний


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

Відповіді:


153

Спробуйте

ALLOWED_HOSTS = ['*']

Менш захищений, якщо вас не закривають або в загальнодоступній локальній мережі, але це те, що я використовую, і це працює.

EDIT: Досить цікаво, що мені потрібно було додати це до кількох моїх 1,8 проектів навіть тоді DEBUG = True. Дуже не знаю чому.

EDIT: Це пов’язано з оновленням безпеки Django, як згадувалось у моєму коментарі.


Де я повинен правильно поставити код, щоб не витрачати його на коди?
Малу Скрылевъ

4
Виконайте grep ALLOWED_HOSTS . -riу головній папці вашого проекту, щоб знайти правильний файл. У цьому випадку це settings.py, але привітання - це завжди корисна порада.
Харальд Нордгрен

в який файл я повинен це написати?
Мона Джалал

@MonaJalal, будь ласка, дивіться коментар Харальда.
Kye Russell

1
Відповідно до [Django docs] [1], поведінку ALLOWED_HOSTSбуло змінено для вирішення атаки повторної атаки DNS, і це, ймовірно, необхідно вперед. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
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.



28

Переконайтеся, що він не переосмислений знову вниз у ваших налаштуваннях.py. У налаштуваннях за замовчуванням є:

ALLOWED_HOSTS = []


1
Помилка msg відводить когось від пошуку цього. Дякуємо за публікацію
scharfmn

15

З документації: https://docs.djangoproject.com/en/1.10/ref/settings/

якщо DEBUG невірно, вам також потрібно правильно встановити налаштування 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файл


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.