如何在Django URL路径中使用下一个页面
我有两个来自如何在Django URL路径中使用下一个页面,django,django-views,Django,Django Views,我有两个来自django.contrib.auth的URL类视图: path('login/', auth_views.LoginView.as_view( template_name='accounts/login/login.html'), name='my_login'), path('logout/', auth_views.LogoutView.as_view( template_name='accounts/logout/logout.html', ne
django.contrib.auth
的URL类视图:
path('login/', auth_views.LoginView.as_view(
template_name='accounts/login/login.html'), name='my_login'),
path('logout/', auth_views.LogoutView.as_view(
template_name='accounts/logout/logout.html', next_page=XXXX), name='my_logout'),
在LogoutView
中传递到下一页的正确语法是什么?例如:
next_page='accounts/login/'
next_page='accounts/login/login.html'
next_page=my_login
next_page='my_login'
next_page=reverse_lazy('my_login')
您可以将my\u login
作为next\u页面的值传递给。基本上是它的用途
但正如@WillemVanOnsem所说,您不需要传递模板\u名称
,因为您将重定向到我的登录名
url。反向(“我的登录名”)
。但是在这里,传递模板\u name=…
和下一页=…
是没有意义的,因为只有在没有下一页的情况下才会呈现模板LoginView
和LogoutView
不是相互依赖的。如果您提供下一页
重定向到该页,则LogoutView
将不会呈现任何内容。只有当您传递一个模板\u名称
,并且没有下一页
,它才会呈现一个页面。我认为您误解了模板,因为URL
和模板之间没有关系。您可以在多个视图(以及URL)上使用同一模板,也可以在同一视图中使用不同的模板。Web服务器外部不存在模板,事实上完全可以创建一个没有任何模板的Django网站。不,它覆盖了dispatch(…)
函数(请参阅),这意味着如果定义了next_页面
,它将重定向,无论它是GET/POST,等。如果没有下一页
,它将为GET/POST呈现模板。但默认情况下,这是某种“重定向”视图:它注销用户,并重定向到页面。
path('logout/', auth_views.LogoutView.as_view(next_page='my_login'), name='my_logout'),