Django – usa mapeo url inverso en la configuración

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.

Django 1.5 y posteriores

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 

Django 1.4

Para Django 1.4, puedes usar reverse_lazy

 LOGIN_URL = reverse_lazy('login') 

Django 1.3 y anteriores

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