Django 5.0 中基于 Django 类的 LogoutView 的问题

问题描述 投票:0回答:1

我通过“django.contrib.auth.urls”使用了基于 Django 类的登录和注销视图,登录功能正常工作,但是当通过链接“http://127.0.0.1:8000/accounts/logout”注销时,它返回 http 405 错误页面,显示“不允许使用方法 (GET)”。 我发现这个注销功能在 django 4.0 中可用,但在 django 5.0 中被删除了。

删除了 django.contrib.auth.views.LogoutView 和 django.contrib.auth.views.logout_then_login() 中通过 GET 请求注销的支持。 -djangoproject.com

我该如何修复它?

我想我应该以某种方式让它在注销时使用 POST 请求而不是 GET 请求,但不知道如何。

django post get django-class-based-views django.contrib.auth
1个回答
0
投票

问题出在所使用的请求方法上,我的初始模板使用了 GET 方法:

{% if user.is_authenticated %} 
<a href="{% url 'logout' %}">Log In</a>

但是通过将模板编辑为:

<form action="{% url 'logout' %}" method="post">
    {% csrf_token %}
    <button type="submit">Log out</button>
</form>

成功了。

© www.soinside.com 2019 - 2024. All rights reserved.