我通过“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 请求,但不知道如何。
问题出在所使用的请求方法上,我的初始模板使用了 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>
成功了。