Django设置文件中的一些选项是URL,例如LOGIN_URL
和LOGIN_REDIRECT_URL
.是否有可能避免对这些URL进行硬编码,而使用反向URL映射?目前,这真的是我发现自己在多个地方编写相同URL的唯一地方.
Django设置文件中的一些选项是URL,例如LOGIN_URL
和LOGIN_REDIRECT_URL
.是否有可能避免对这些URL进行硬编码,而使用反向URL映射?目前,这真的是我发现自己在多个地方编写相同URL的唯一地方.
从Django 1.5、LOGIN_URL
和LOGIN_REDIRECT_URL
开始接受命名URL模式.这意味着您不需要在设置中硬编码任何URL.
LOGIN_URL = 'login' # name of url pattern
对于Django 1.5-1.9,您也可以使用view函数名,但不建议这样做,因为Django 1.8中不推荐使用该函数名,并且在Django 1.10+中不起作用.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
对于Django 1.4,您可以使用reverse_lazy
LOGIN_URL = reverse_lazy('login')
这是最初的答案,它在Django加入reverse_lazy
之前就起作用了
在URL中.输入设置:
from django.conf import settings
然后添加url模式
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
请注意,您需要切分LOGIN_URL
%,以移除领先的前锋劈开.
在shell 中:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'