Algunas de las opciones en el archivo de configuración de django son direcciones URL, por ejemplo LOGIN_URL
y LOGIN_REDIRECT_URL
. ¿Es posible evitar la codificación rígida de estas URL y, en su lugar, utilizar el mapeo de URL inverso? Por el momento, este es realmente el único lugar donde me encuentro escribiendo las mismas URL en varios lugares.Django: use la asignación inversa de URL en la configuración
Respuesta
Django 1.5 y posterior
A partir de Django 1.5, LOGIN_URL
y LOGIN_REDIRECT_URL
aceptar nombrados patrones de URL. Eso significa que no necesita codificar ninguna URL en su configuración.
LOGIN_URL = 'login' # name of url pattern
Para Django 1.5 a 1.9, también se puede utilizar la vista nombre de la función, pero esto no es recomendable, ya que está en desuso en Django 1.8 y no funcionará en Django 1.10+.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Django 1.4
Para Django 1.4, puede podría utilizar reverse_lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 y anteriores
Esto se le añadió la respuesta original, que trabajó antes reverse_lazy
a Django
In url s.py, la configuración de importación:
from django.conf import settings
A continuación, añadir el patrón de URL
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
en cuenta que necesita para cortar LOGIN_URL
para quitar la barra diagonal.
En el shell:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
Ah, buena solución, no consideré pasar de configuración -> URL, solo al revés. +1 –
¿Y puede evitar forzar la raíz de django para que/accounts/login se resuelva en/root/accounts/login si su aplicación django se implementa en example.com/root en vez de example.com/? – gozzilli
@gozzilli: desde Django 1.4, utilizaría 'reverse_lazy' en lugar de importar' settings.LOGIN_URL' en las direcciones URL. He actualizado la respuesta. – Alasdair
En Django versión de desarrollo reverse_lazy() se convierte en una opción: https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy
+1 gracias por el encabezado! –
Está programado para la versión te 1.4 en marzo de 2012 –
Aquí hay un fragmento para versiones anteriores: http://djangosnippets.org/snippets/499/ –
- 1. Django consulta inversa en la plantilla
- 2. Cómo hacer búsqueda URL inversa en aplicación reutilizable Django namespaced
- 3. Ruta de URL inversa JS Express (estilo Django)
- 4. use .htaccess para la url amigable
- 5. Django: Asignación de variables en la plantilla
- 6. Django agregación entre la relación inversa
- 7. Usando inversa() en Django forma
- 8. Cualquiera que use Django en la "Empresa"
- 9. ¿Dónde puedo configurar la URL de mi sitio en la configuración de django?
- 10. Configuración de la URL en una WebView
- 11. Asignación de URL en PHP?
- 12. Django unittest's: Cómo configurar la vista temporal con la configuración de url temporal para unittest's
- 13. Uso de la configuración de Django en las plantillas
- 14. Django URLS, usando a? en la URL
- 15. Cómo obtener la URL anterior en django
- 16. Use "contiene" y "iexact" en la misma consulta en DJANGO
- 17. búsqueda inversa Django por ForeignKey
- 18. Propósito de la configuración de Django 'SECRET_KEY'
- 19. Django obtener la URL de archivos estáticos en la vista
- 20. django staticfiles en la raíz de la url
- 21. Cómo revertir la URL de feed django?
- 22. Django redirigir usando inversa() a una dirección URL que se basa en las cadenas de consulta
- 23. Django: Imprimir url de vista sin hardcoding la url
- 24. Plantillas Django: Comparación de la URL actual con {% url xyz%}
- 25. Adición de un ManyToManyWidget a la inversa de un ManyToManyField en la administración de Django
- 26. Django problema de resolución de caracteres especiales en la url
- 27. ¿Cómo seleccionar_related en la clave foránea inversa?
- 28. Estrategias de asignación de controlador URL (PHP)
- 29. Prefijo de asignación de URL en Grails
- 30. Asignación de imagen desde la URL con Dragonfly
lo dudo, ya que 'settings.py' se carga antes de que el módulo de URL. Interesado en descubrirlo. Gran pregunta –