Leo*_* Li 4 django-templates python-3.7 django-2.1
下面是 django.contrib.auth.views.LogoutViews 中的默认设置,
template_name = 'registration/logged_out.html'
Run Code Online (Sandbox Code Playgroud)
我像这样配置我的应用程序的 urls.py:
from django.urls import path
from . import views
from django.conf import settings
from django.contrib.auth.views import LoginView, LogoutView
app_name = 'account'
urlpatterns = [
#path("login/", views.user_login, name="user_login"),
path("login/", LoginView.as_view(), name="user_login"),
path("nlogin/", LoginView.as_view(), {"template_name":"account/login.html"}),
path("logout/", LogoutView.as_view(), name="user_logout"),
path("logoutt/", LogoutView.as_view(), {"template_name":"account/logout.html"}),
]
Run Code Online (Sandbox Code Playgroud)
"template_name":"account/login.html" 工作正常,但 "template_name":"account/logout.html" 似乎没有区别,我的代码有什么问题?
当您使用基于类的变体时,您通过.as_view(所谓的**initkwargs)方法将设置传递给视图:
from django.urls import path
from . import views
from django.conf import settings
from django.contrib.auth.views import LoginView, LogoutView
app_name = 'account'
urlpatterns = [
#path("login/", views.user_login, name="user_login"),
path("login/", LoginView.as_view(), name="user_login"),
path("nlogin/", LoginView.as_view(template_name='account/login.html')),
path("logout/", LogoutView.as_view(), name="user_logout"),
path("logoutt/", LogoutView.as_view(template_name='account/logout.html')),
]Run Code Online (Sandbox Code Playgroud)
否则参数将在 中结束self.kwargs,并且基于类的视图不会检查这些。
在对文件LoginView[Django的DOC]提到了这个问题,以及你可以作为参数传递的列表**initkwargs。