Certaines des options du fichier de paramètres django sont des URL, par exemple LOGIN_URL
et LOGIN_REDIRECT_URL
. Est-il possible d'éviter le codage en dur de ces URL, et d'utiliser à la place la cartographie d'url inverse? Pour le moment, c'est vraiment le seul endroit où je me retrouve à écrire les mêmes URL à plusieurs endroits.Django - utiliser le mappage d'url inverse dans les paramètres
Répondre
Django 1.5 et plus tard
A partir de Django 1.5, LOGIN_URL
et LOGIN_REDIRECT_URL
accepter des modèles d'URL nommés. Cela signifie que vous n'avez pas besoin de coder en dur les URL dans vos paramètres.
LOGIN_URL = 'login' # name of url pattern
Pour Django 01.05 à 01.09, vous pouvez également utiliser le nom de la fonction de vue, mais ce n'est pas recommandé car il est dépréciée dans Django 1.8 et ne fonctionne pas dans Django 1.10+.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Django 1.4
Pour Django 1.4, vous pouvez pouvez utiliser reverse_lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 et versions antérieures
Ceci est la réponse originale, qui a travaillé avant reverse_lazy
a été ajouté à Django
Dans l'url s.py, les paramètres d'importation:
from django.conf import settings
ajouter ensuite le modèle url
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
Notez que vous devez couper LOGIN_URL
pour enlever la barre oblique.
Dans la coquille:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
Ah, bonne solution, je ne pensais pas aller de paramètres -> urls, seulement l'inverse. +1 –
Et pouvez-vous éviter de coder en dur la racine django, de sorte que/accounts/login se résout en/root/accounts/login si votre application django est déployée sur example.com/root plutôt qu'exemple.com/? – gozzilli
@gozzilli - depuis Django 1.4, j'utiliserais 'reverse_lazy' au lieu d'importer' settings.LOGIN_URL' dans les urls. J'ai mis à jour la réponse. – Alasdair
Dans la version de développement django reverse_lazy() devient une option: https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy
+1 merci pour la tête haute! –
Il est prévu pour la version 1.4 en Mars 2012 –
Voici un extrait pour les versions antérieures: http://djangosnippets.org/snippets/499/ –
- 1. Django HttpResponseRedirect fonction inverse dans le tutoriel
- 2. Comment utiliser le template change_form.html dans django?
- 3. Impossible d'importer les paramètres Django dans Google App Engine
- 4. clé étrangère inverse pour modèle django-FTS consultable dans le modèle
- 5. comment utiliser le reste math dans le modèle django?
- 6. Comment utiliser CommaSeparatedIntegerField dans django?
- 7. Utiliser par programme les loaddata de Django
- 8. Aucune erreur inverse dans le correctif Django de Google App Engine?
- 9. Django: la fonction inverse échoue avec une exception
- 10. Django Forms - Comment utiliser le préfixe Paramètre
- 11. Comment utiliser les paramètres facultatifs dans un contrôleur ASP.NET MVC
- 12. Utiliser django-rest-interface
- 13. comment faire par ordre dans le mappage hibernate
- 14. Comment utiliser PyMock et Nez avec les modèles Django?
- 15. Inverse DataTrigger?
- 16. PyAMF/Django - Erreurs de mappage de classe Flex
- 17. Comment utiliser django mptt?
- 18. Paramètres par défaut des actions avec Django
- 19. comment utiliser les unités le long des valeurs des paramètres de fonction dans Mathematica
- 20. apply-templates dans l'ordre inverse
- 21. Comment utiliser Django avec GWT?
- 22. Ambiguïté dans le mappage de servlet
- 23. Passer les paramètres dans les appels document.ready()
- 24. Dois-je utiliser «depuis les utilitaires d'importation de paquets, les paramètres» ou «depuis les utilitaires d'importation, les paramètres»
- 25. Empilement une variable dans le sens inverse en PHP
- 26. Quelqu'un a-t-il essayé le débogage inverse dans gdb?
- 27. Pourquoi BinaryReader.ReadUInt32() inverse le modèle binaire?
- 28. Webservice cache proxy inverse?
- 29. Django - spécifie quel gestionnaire de modèle l'administrateur Django doit utiliser
- 30. Besoin d'aide pour le mappage Hibernate
Je doute, puisque 'settings.py' est chargé avant que le module URL. Intéressé de savoir si. Bonne question –