CommandError: Musisz ustawić settings.ALLOWED_HOSTS, jeśli DEBUG ma wartość False

109

Używam Django 1.6.5 w moim programie txsite z ustawieniami:

DEBUG = True

Ustawiłem DEBUG na False, ale kiedy runserverotrzymuję następujący błąd:

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

Spróbowałem ustawić ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] ale pojawia się ten sam błąd.

ktoś wie, jak to rozgryźć?

Rancho
źródło
Sprawdź, czy poniżej zdefiniowałeś ponownie DEBUG = True. To może być po prostu zła kopia. Dotarłem tutaj, ponieważ anulowałem DEBUG = False przez przypadek
Tms91

Odpowiedzi:

154

Próbować

ALLOWED_HOSTS = ['*']

Mniej bezpieczne, jeśli nie masz wyłączonej zapory sieciowej lub w publicznej sieci LAN, ale tego używam i działa.

EDYCJA: Co ciekawe, musiałem dodać to do kilku moich projektów 1.8, nawet gdy DEBUG = True. Bardzo nie wiem, dlaczego.

EDYCJA: Jest to spowodowane aktualizacją zabezpieczeń Django, o której wspomniałem w moim komentarzu.

Kye Russell
źródło
Gdzie poprawnie umieścić kod, aby go nie zmarnować?
Малъ Скрылевъ
4
Zrób grep ALLOWED_HOSTS . -riw folderze głównym projektu, aby znaleźć właściwy plik. W tym przypadku jest to settings.py, ale grepowanie jest zawsze dobrą radą.
Harald Nordgren,
w którym pliku mam to napisać?
Mona Jalal
@MonaJalal, zobacz komentarz Haralda.
Kye Russell
1
Według [Django docs] [1], zachowanie ALLOWED_HOSTSzostało zmodyfikowane w celu rozwiązania problemu z ponownym wiązaniem DNS i jest to prawdopodobnie konieczne w przyszłości. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell
55

Rozwiązaniem może być również dodanie oryginalnego adresu IP i / lub nazwy hosta:

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

Warunkiem, który należy spełnić, jest to, że nagłówek hosta (lub X-Forwarded-Hostjeśli USE_X_FORWARDED_HOSTjest włączony) powinien być zgodny z jedną z wartości w ALLOWED_HOSTS.

yeaske
źródło
2
Po skonfigurowaniu tego, stary dobry restart działał dla mnie ...
Razaman
28

Upewnij się, że nie został ponownie zdefiniowany ponownie niżej w twoim settings.py. Domyślne ustawienia to:

ALLOWED_HOSTS = []

Matt
źródło
1
Komunikat o błędzie prowadzi nas od szukania tego. Dzięki za wysłanie wiadomości.
scharfmn
15

Z dokumentacji: https://docs.djangoproject.com/en/1.10/ref/settings/

jeśli DEBUG ma wartość False, należy również odpowiednio ustawić ustawienie ALLOWED_HOSTS. W przeciwnym razie wszystkie żądania zostaną zwrócone jako „Złe żądanie (400)”.

A stąd: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

Używam czegoś takiego:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
Memória de Cálculo
źródło
4

Po prostu zrób to:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

To wystarczy.

Fahadi Muhumuza
źródło
1

Jeśli pracujesz PyCharm, sprawdź Environmental variablesswój plik Django server. Powinieneś określić właściwy module.settingsplik

Daniel Chepenko
źródło
0

Próbować

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

ALLOWED_HOSTS = ['*']

Wartość „*” będzie pasować do wszystkiego; w takim przypadku jesteś odpowiedzialny za zapewnienie własnej walidacji nagłówka hosta.

srimanivinay
źródło
-8

Po prostu zakomentuj linię: ALLOWED_HOSTS = [...]

user3797826
źródło
Jeśli komentarz, skąd będziesz wiedzieć, gdzie przekierować?
cdrrr