CommandError: vous devez définir settings.ALLOWED_HOSTS si DEBUG est False


109

J'utilise Django 1.6.5 dans mon programme txsite avec les paramètres:

DEBUG = True

J'ai défini DEBUG sur False, mais lorsque runserverj'obtiens l'erreur suivante:

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

J'ai essayé de régler ALLOWED_HOSTS = ['127.0.0.1', 'localhost']mais j'obtiens la même erreur.

quelqu'un sait comment le comprendre?


Vérifiez si ci-dessous vous avez défini à nouveau DEBUG = True. Ce pourrait être juste un mauvais copypaste. Je suis arrivé ici parce que j'ai annulé DEBUG = False par accident
Tms91

Réponses:


154

Essayer

ALLOWED_HOSTS = ['*']

Moins sécurisé si vous n'êtes pas protégé par un pare-feu ou sur un réseau local public, mais c'est ce que j'utilise et cela fonctionne.

EDIT: Il est intéressant de noter que j'ai eu besoin d'ajouter cela à quelques-uns de mes projets 1.8, même quand DEBUG = True. Je ne sais pas pourquoi.

EDIT: Cela est dû à une mise à jour de sécurité Django comme mentionné dans mon commentaire.


Où dois-je mettre le code correctement, afin de ne pas gaspiller le code?
Малъ Скрылевъ

4
Faites grep ALLOWED_HOSTS . -ridans le dossier principal de votre projet pour trouver le fichier correct. C'est settings.py dans ce cas, mais grepping est toujours un bon conseil.
Harald Nordgren

dans quel fichier dois-je écrire ceci?
Mona Jalal

@MonaJalal s'il vous plaît voir le commentaire de Harald.
Kye Russell

1
Selon [Django docs] [1], le comportement de ALLOWED_HOSTSa été modifié pour répondre à une attaque de rebinding DNS et cela est probablement nécessaire à l'avenir. [1]: docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
Kye Russell

55

Votre solution pourrait être d'ajouter également l'adresse IP et / ou le nom d'hôte d'origine:

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

La condition à remplir est que l'en-tête d'hôte (ou X-Forwarded-Hosts'il USE_X_FORWARDED_HOSTest activé) doit correspondre à l'une des valeurs de ALLOWED_HOSTS.


2
Après avoir configuré cela, le bon vieux redémarrage a fonctionné pour moi ...
Razaman

28

Assurez-vous qu'il n'est pas redéfini plus bas dans votre settings.py. Les paramètres par défaut comprennent:

ALLOWED_HOSTS = []


1
Le msg d'erreur éloigne la recherche de cela. Merci d'avoir posté.
scharfmn



1

Si vous travaillez dans PyCharm, vérifiez le Environmental variablespour votre Django server. Vous devez spécifier le module.settingsfichier approprié


0

Essayer

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

ALLOWED_HOSTS = ['*']

Une valeur de «*» correspondra à tout; dans ce cas, vous êtes responsable de fournir votre propre validation de l'en-tête Host.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.