Solución:
Django calcula esta URL en la función django.contrib.auth.views: redirect_to_login como:
resolved_url = resolve_url(login_url or settings.LOGIN_URL)
Por lo tanto, debe configurarlo como una cadena:
LOGIN_URL = 'my_app.views.sign_in'
También en settings.py puede usar la función reverse_lazy:
from django.core.urlresolvers import reverse_lazy
LOGIN_URL = reverse_lazy('my_app.views.sign_in')
https://docs.djangoproject.com/en/1.5/ref/urlresolvers/#reverse-lazy
Si no desea vincular el LOGIN_URL
a la “vista” (puede cambiar en otra), luego puede vincular a la URL nombrada en settings.py
:
from django.core.urlresolvers import reverse_lazy
LOGIN_URL = reverse_lazy('login')
donde “iniciar sesión” es algo como:
url(r'^accounts/login/$', 'my_app.view.Login', name="login"),
entonces, si cambia la vista en el otro, no necesita hacer cambios en settings.py
Suponiendo que ha establecido el nombre de la ruta en urls.py
, puedes usar 'application_name:view_name'
como el LOGIN_URL
valor en settings.py
, al igual que:
aplicación / urls.py
...
path('login/', views.login, name="login"),
...
proyecto / settings.py
LOGIN_URL = 'application:login'
https://docs.djangoproject.com/en/2.1/ref/settings/#login-url