Django 1.5 及更高版本
从 Django 1.5 开始,LOGIN_URL
and LOGIN_REDIRECT_URL
接受命名 URL 模式。这意味着您不需要在设置中对任何网址进行硬编码。
LOGIN_URL = 'login' # name of url pattern
对于 Django 1.5 - 1.9,您还可以使用视图函数名称,但不建议这样做,因为它在 Django 1.8 中已弃用,并且在 Django 1.10+ 中不起作用。
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
姜戈1.4
对于 Django 1.4,你可以使用reverse_lazy https://docs.djangoproject.com/en/1.6/ref/urlresolvers/#reverse-lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 及更早版本
这是原来的答案,之前有效reverse_lazy
已添加到 Django
在 urls.py 中,导入设置:
from django.conf import settings
然后添加 url 模式
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
注意,需要切片LOGIN_URL
删除前导的正斜杠。
在外壳中:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'