CommandError: Sie müssen settings.ALLOWED_HOSTS festlegen, wenn DEBUG False ist

109

Ich benutze Django 1.6.5 in meinem Programm txsite mit den Einstellungen:

DEBUG = True

Ich habe DEBUG auf False gesetzt, aber wenn ich es tue runserver, erhalte ich den folgenden Fehler:

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

Ich habe versucht einzustellen, ALLOWED_HOSTS = ['127.0.0.1', 'localhost']aber ich bekomme den gleichen Fehler.

weiß jemand, wie man es herausfindet?

Rancho
quelle
Überprüfen Sie, ob Sie unten erneut DEBUG = True definiert haben. Es könnte nur eine schlechte Kopypaste sein. Ich bin hierher gekommen, weil ich DEBUG = False versehentlich abgesagt habe
Tms91

Antworten:

153

Versuchen

ALLOWED_HOSTS = ['*']

Weniger sicher, wenn Sie nicht vor oder in einem öffentlichen LAN durch eine Firewall geschützt sind, aber es ist das, was ich verwende und es funktioniert.

EDIT: Interessanterweise musste ich dies zu einigen meiner 1.8 Projekte hinzufügen, auch wenn DEBUG = True. Sehr unsicher warum.

BEARBEITEN: Dies ist auf ein Django-Sicherheitsupdate zurückzuführen, wie in meinem Kommentar erwähnt.

Kye Russell
quelle
Wo soll ich den Code richtig platzieren, um den Code nicht zu verschwenden?
Малъ Скрылевъ
4
Gehen Sie grep ALLOWED_HOSTS . -riin den Kopfordner Ihres Projekts, um die richtige Datei zu finden. In diesem Fall ist settings.py, aber Grepping ist immer ein guter Rat.
Harald Nordgren
In welche Datei soll ich das schreiben?
Mona Jalal
@MonaJalal siehe Haralds Kommentar.
Kye Russell
1
Laut [Django docs] [1] wurde das Verhalten von ALLOWED_HOSTSgeändert, um einen DNS-Rebinding-Angriff zu bekämpfen, und dies ist wahrscheinlich in Zukunft erforderlich. [1]: docs.djangoproject.com/de/1.10/ref/settings/#allowed-hosts
Kye Russell
55

Ihre Lösung könnte darin bestehen, die ursprüngliche IP-Adresse und / oder den ursprünglichen Hostnamen hinzuzufügen:

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

Die Bedingung, die erfüllt sein muss, ist, dass der Host-Header (oder X-Forwarded-Hostfalls USE_X_FORWARDED_HOSTaktiviert) mit einem der Werte in übereinstimmt ALLOWED_HOSTS.

yeaske
quelle
2
Nachdem ich dies konfiguriert hatte, funktionierte der gute alte Neustart für mich ...
Razaman
28

Stellen Sie sicher, dass es nicht weiter unten in Ihrer settings.py neu definiert wird. Die Standardeinstellungen haben:

ALLOWED_HOSTS = []

Matt
quelle
1
Die Fehlermeldung führt dazu, dass man nicht danach sucht. Danke fürs Schreiben.
scharfmn
15

Aus der Dokumentation: https://docs.djangoproject.com/de/1.10/ref/settings/

Wenn DEBUG False ist, müssen Sie auch die Einstellung ALLOWED_HOSTS richtig einstellen. Andernfalls werden alle Anforderungen als "Bad Request (400)" zurückgegeben.

Und von hier aus: https://docs.djangoproject.com/de/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

Ich benutze so etwas:

ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
Memória de Cálculo
quelle
4

Mach das einfach:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Es wird den Trick machen.

Fahadi Muhumuza
quelle
1

Wenn Sie in arbeiten PyCharm, überprüfen Sie die Environmental variablesfür Ihre Django server. Sie sollten die richtige module.settingsDatei angeben

Daniel Chepenko
quelle
-8

Kommentieren Sie einfach die Zeile aus: ALLOWED_HOSTS = [...]

user3797826
quelle
Wenn Kommentar, woher wissen Sie, wohin umgeleitet werden soll?
cdrrr