Ala*_*air 53
作为Django的1.5,LOGIN_URL并LOGIN_REDIRECT_URL接受名为URL模式.这意味着您无需在设置中对任何网址进行硬编码.
LOGIN_URL = 'login' # name of url pattern
Run Code Online (Sandbox Code Playgroud)
对于Django 1.5 - 1.9,您也可以使用视图函数名称,但不建议这样做,因为它在Django 1.8中已弃用,在Django 1.10+中不起作用.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Run Code Online (Sandbox Code Playgroud)
对于Django 1.4,你可以使用 reverse_lazy
LOGIN_URL = reverse_lazy('login')
Run Code Online (Sandbox Code Playgroud)
这是最初的答案,之前有效的reverse_lazy是添加到Django
在urls.py中,导入设置:
from django.conf import settings
Run Code Online (Sandbox Code Playgroud)
然后添加url模式
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
Run Code Online (Sandbox Code Playgroud)
请注意,您需要切片LOGIN_URL以删除前导斜杠.
在shell中:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
Run Code Online (Sandbox Code Playgroud)
Bas*_*ans 13
在django开发版中,reverse_lazy()成为一个选项:https: //docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy