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?

Rancho
la source
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.

Kye Russell
la source
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.

oui
la source
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 = []

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

De la documentation: https://docs.djangoproject.com/en/1.10/ref/settings/

si DEBUG est False, vous devez également définir correctement le paramètre ALLOWED_HOSTS. Si vous ne le faites pas, toutes les demandes seront renvoyées en tant que «Mauvaise demande (400)».

Et d'ici: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-ALLOWED_HOSTS

J'utilise quelque chose comme ça:

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

Faites juste ceci:

  ALLOWED_HOSTS =  ['localhost', '127.0.0.1']

Cela fera l'affaire.

Fahadi Muhumuza
la source
1

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

Daniel Chepenko
la source
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.

srimanivinay
la source
-8

Mettez simplement en commentaire la ligne: ALLOWED_HOSTS = [...]

utilisateur3797826
la source
En cas de commentaire, comment saura où rediriger?
cdrrr