Alcune delle opzioni nel file di impostazioni di django sono url, ad esempio LOGIN_URL
e LOGIN_REDIRECT_URL
. È possibile evitare di codificare questi URL e utilizzare invece la mappatura dell'URL inverso? Al momento questo è davvero l'unico posto in cui mi trovo a scrivere gli stessi URL in più posti.Django - usa la mappatura url inversa nelle impostazioni
risposta
Django 1.5 e successivamente
Come di Django 1.5, LOGIN_URL
e LOGIN_REDIRECT_URL
accettare modelli di URL con nome. Ciò significa che non è necessario codificare gli url nelle impostazioni.
LOGIN_URL = 'login' # name of url pattern
Per Django 1,5-1,9, è anche possibile utilizzare il nome della funzione vista, ma questo non è raccomandato perché è deprecato in Django 1.8 e non funzionerà in Django 1.10+.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Django 1.4
per Django 1.4, è possibile potrebbe usare reverse_lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 e precedenti
questa è la risposta originale, che ha lavorato prima di reverse_lazy
è stato aggiunto al Django
In url s.py, impostazioni di importazione:
from django.conf import settings
Quindi aggiungere il modello URL
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
Nota che è necessario tagliare LOGIN_URL
per rimuovere la conduce in avanti barra.
Nella shell:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
Ah, buona soluzione, non ho considerato di andare dalle impostazioni -> URL, solo il contrario. +1 –
E si può evitare l'hard-coding della root di django, in modo che/accounts/login si risolva in/root/accounts/login se la tua app django è distribuita su example.com/root piuttosto example.com/? – gozzilli
@gozzilli: da Django 1.4, userei 'reverse_lazy' invece di importare' settings.LOGIN_URL' negli URL. Ho aggiornato la risposta. – Alasdair
In django versione di sviluppo reverse_lazy() diventa un'opzione: https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy
+1 grazie per l'heads up! –
È programmato per la versione 1.4 di marzo 2012 –
Ecco uno snippet per le versioni precedenti: http://djangosnippets.org/snippets/499/ –
- 1. Usa la posizione fittizia senza impostarla nelle impostazioni
- 2. Mappatura parametri URL url
- 3. Come fare ricerca URL inversa in applicazione riutilizzabile Django namespace
- 4. mappatura inversa del dizionario con Python
- 5. Cosa significa "URL Jenkins" nelle impostazioni di configurazione?
- 6. django - nessuna corrispondenza inversa per la vista di login
- 7. App Engine mappatura URL
- 8. Ricerca inversa Django di ForeignKey
- 9. Java NumberFormat ignora la virgola nelle impostazioni locali statunitensi?
- 10. Django cross-site URL
- 11. Mappatura URL con C# HttpListener
- 12. Errore URL POST Django
- 13. Django: prefetch_related() segue la ricerca inversa delle relazioni?
- 14. django impostazioni specifiche app
- 15. invertire gli URL per la vista basato classe Django
- 16. admin Django-grappelli: Nessun errore di corrispondenza inversa
- 17. Organizzazione impostazioni in Django
- 18. Schema URL "Apri Impostazioni" ios
- 19. celerybeat usa UTC anche con le impostazioni del fuso orario
- 20. Perché Django 1.9 ha sostituito tuple() con elenchi [] in impostazioni e URL?
- 21. Strategie di mappatura degli URL Controller (PHP)
- 22. Django: Pass variabile per la registrazione in file di impostazioni
- 23. URL Django, come mappare la radice all'app?
- 24. Come memorizzare un HashTable nelle impostazioni utente?
- 25. Creazione di una mappatura URL catch-all
- 26. Ottenere Django Admin url di un oggetto
- 27. impostazioni Django non configurate errore
- 28. Ascoltate posizione disabilitare l'accesso/abilitare nelle impostazioni
- 29. Salvataggio delle informazioni utente nelle impostazioni dell'applicazione
- 30. utilizzando le impostazioni di Django nei modelli
Ne dubito, poiché 'settings.py' viene caricato prima del modulo URL. Interessato a scoprirlo però. Grande domanda. –