无法注销用户 django 身份验证

Not able to logout user django authentication

我正在从事一个项目,组织将在其中登录,然后在需要时注销。但不知何故注销功能不起作用。没有重定向发生,用户无法注销。

# urls.py
urlpatterns = [
    path('logout',views.user_logout,name = 'logout')
]

# views.py
def user_logout(request):
if request.method == "POST":
    logout(request)
    return HttpResponseRedirect('login')

# template:
<a href="#" onClick="document.getElementById('logoutform').submit()" class="btn">
Logout</a>
<form id="logoutform" method="POST" action="{% url 'logout' %}">
{% csrf_token %}
<input type="hidden">
</form>

页面只是重新加载,没有发生重定向。

我认为你把它弄得比需要的更复杂了。 Django 带有 LogoutView,它允许使用 GET 请求注销。您可以使用该注销视图,或将您自己的视图更改为:

from django.shortcuts import redirect

def user_logout(request):
    logout(request)
    return HttpResponseRedirect('login')  # assumes you have a URL pattern with name='login'.

请注意 HttpResponseRedirect('login') 将重定向到相对 URL 'login',因此您最终可能会到达 /logout/login。您应该使用绝对 URL(例如 HttpResponseRedirect('/login/')),反转 URL(例如 return HttpResponseRedirect(reverse('login')),或者使用 redirect 快捷方式来反转你.

更改注销视图后,您可以删除表单并简单地link到注销页面。

<a href="{% url 'logout' %}" onClick="document.getElementById('logoutform').submit()" class="btn">Logout</a>