Algunas de las opciones en el archivo de configuración de django son las urls, por ejemplo LOGIN_URL
y LOGIN_REDIRECT_URL
. ¿Es posible evitar la encoding de estas URL y, en su lugar, utilizar la asignación de URL inversa? En este momento, este es realmente el único lugar donde me encuentro escribiendo las mismas direcciones URL en varios lugares.
A partir de Django 1.5, LOGIN_URL
y LOGIN_REDIRECT_URL
aceptan patrones de URL nombrados. Eso significa que no es necesario codificar las URL en sus configuraciones.
LOGIN_URL = 'login' # name of url pattern
Para Django 1.5 – 1.9, también puede usar el nombre de la función de vista, pero esto no se recomienda porque está obsoleto en Django 1.8 y no funcionará en Django 1.10+.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Para Django 1.4, puedes usar reverse_lazy
LOGIN_URL = reverse_lazy('login')
Esta es la respuesta original, que funcionó antes de que reverse_lazy
se agregara a Django
En urls.py, importar configuraciones:
from django.conf import settings
Luego agrega el patrón url
urlpatterns=('', ... url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login', name="login") ... )
Tenga en cuenta que debe LOGIN_URL
para eliminar la barra diagonal LOGIN_URL
.
En la shell:
>>>from django.core.urlresolvers import reverse >>>reverse('login') '/accounts/login/'
En la versión de desarrollo de django, reverse_lazy () se convierte en una opción: https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy