296 votes

Django donne une requête incorrecte (400) lorsque DEBUG = False

Je suis nouveau sur django-1.6. Lorsque je lance le serveur django avec DEBUG = True , il fonctionne parfaitement. Mais lorsque je change DEBUG à False dans le fichier de paramètres, le serveur s'est arrêté et il a généré l'erreur suivante à l'invite de commande:

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

Après avoir changé ALLOWED_HOSTS à ["http://127.0.0.1:8000",] , dans le navigateur j'obtiens l'erreur:

 Bad Request (400)
 

Est-il possible d'exécuter Django sans mode de débogage?

481voto

Martijn Pieters Points 271458

L' ALLOWED_HOST liste devrait contenir d'hôte pleinement qualifié de noms, pas d'url. Quitter le port et le protocole. J'ajouterais localhost trop:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

Vous pouvez également utiliser * pour correspondre à tout hôte:

ALLOWED_HOSTS = ['*']

Citant la documentation:

Les valeurs de cette liste peuvent être des noms pleinement qualifiés (par exemple, 'www.example.com'), auquel cas elles seront jumelées à l'encontre de la demande de l' Host - tête exactement (insensible à la casse, non compris le port). Un début de valeur avec une période peut être utilisé comme un sous-domaine générique: '.example.com' correspondra example.com, www.example.com, et de toute autre sous-domaine de l' example.com. Une valeur de '*' correspondra à quelque chose; dans ce cas, vous êtes responsable de fournir votre propre validation de l' Host - tête (peut-être dans un middleware; si ce middleware doit être en tête de liste dans MIDDLEWARE_CLASSES).

En gras c'est moi qui souligne.

Le statut de 400 réaction est due à un SuspeciousOperation exception d'être soulevées lors de votre en-tête d'hôte ne correspond à aucune des valeurs dans la liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X