首页 > 解决方案 > Django 无法覆盖注销视图

问题描述

django.contrib.auth.urls用来注销用户。我想要并且我有查看注销但我不知道为什么当我转到帐户/注销/ url 时,django 不使用我的,而是注销的默认视图。

from django.urls import path, include
import django.contrib.auth.urls

from . import views
app_name = 'accounts'

urlpatterns = [

path('', views.index, name='index'),
path('accounts/', include('django.contrib.auth.urls')),
path('accounts/sign_up/', views.sign_up, name="sign-up"),
path('accounts/logout/', views.logout_view, name="logout"),


]


def logout_view(request):
print(request.user)
context = {'user2': request.user}
logout(request)
return render(request, 'accounts/logged_out.html', context)

标签: djangoauthenticationviewlogoutoverwrite

解决方案


由于首先path('accouts/', …)订购,它将触发模块中的路径 [GitHub]logout/django.contrib.auth.urls

如果您更改顺序,它将首先与该视图匹配logout_view并触发该视图:

urlpatterns = [
    path('', views.index, name='index'),
    path('accounts/logout/', views.logout_view, name='logout'),
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/sign_up/', views.sign_up, name='sign-up'),
]

推荐阅读