我在其中一个应用的urls.py文件中有以下代码。
from django.conf.urls import url
from .views import *
urlpatterns = [
url(r'^signup/$', SignUpView.as_view(), name="signup"),
url(r'^login/$', LoginView.as_view(), name="login"),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}, name="logout"),
]
我想使用'home'或'index'之类的命名参数,而不是使用'/'作为'next_page'参数值。我该怎么办?
答案 0 :(得分:1)
您可以对需要从网址名称获取实际网址的所有情况使用reverse_lazy()。
from django.core.urlresolvers import reverse_lazy
urlpatterns = [
url(r'^signup/$', SignUpView.as_view(), name="signup"),
url(r'^login/$', LoginView.as_view(), name="login"),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': reverse_lazy('home')}, name="logout"),
]
答案 1 :(得分:1)
您只需将视图的反向名称作为next_page
参数的值传递为django.contrib.auth.views.logout
uses django.shortcuts.resolve_url
,其文档描述为
返回适合传递的参数的URL。 争论可能是:
- 模型:将调用模型的
get_absolute_url()
函数。- 视图名称,可能包含参数:
urlresolvers.reverse()
用于反向解析名称。- 一个URL,将按原样返回。