2010-09-06 4 views
2

je lance mon serveur de développement local sur le port 8000 parce que mes FAI bloque le port 80. Le problème est lors de l'utilisation:Django HttpResponseRedirect() + reverse() tronquer numéro de port dans l'URL

return HttpResponseRedirect(reverse('foobar')) 

Django (pour une raison) tronque le port de l'URL - mais il n'a aucun problème à le résoudre dans le contexte des balises de gabarit, par exemple: {% url foobar%}.

Étant donné que j'essaie de réduire le nombre de modifications manuelles requises pour le déploiement sur notre serveur de production, je souhaite éviter le codage en dur de l'URL.

Répondre

0

Qu'est-ce que reverse ('foobar') évalue à ce stade?

est l'hôte correct: port du site est entré dans la table des sites (page Admin est généralement http://localhost:8000/admin/sites/site/ si admin est activé)

Pouvez-vous utiliser pour obtenir -i boucle la réponse complète du serveur?

+0

Ah - ouais cela vaut probablement la peine de mentionner - il se résout à http://staging.devdomain.com/foobar/ donc il se résout correctement - sauf qu'il devrait être http://staging.devdomain.com:8000/foobar/ – NFicano

+0

Oh, et je n'utilise pas l'Admin Django - donc il est réglé par défaut sur example.com – NFicano

1

reverse() et {% url %} ne tiennent aucun compte du domaine et du port - ils fonctionnent uniquement sur le chemin. Donc le résultat de reverse('foobar') est l'élément de votre urls.py qui correspond à 'foobar' - par exemple, /foo/bar/.

Alors quelque chose d'autre doit changer votre URL - peut-être votre navigateur.