Django 中的 LogoutView 存在问题。当我尝试输入链接“accounts/logout”时,django 服务器会在 cmd 中弹出:
Method Not Allowed (GET): /accounts/logout/
Method Not Allowed: /accounts/logout/
[24/Feb/2024 13:48:11] "GET /accounts/logout/ HTTP/1.1" 405 0
这是查看文件内容:
from django.urls 导入路径,包含 从 django.contrib.auth 将视图导入为 auth_views 从 .views 导入 showProfile,logout_user
app_name = 'user'
urlpatterns = [
path('logout/', auth_views.LogoutView.as_view(template_name='registration/logged_out.html'), name='logout'),
path('', include('django.contrib.auth.urls')),
]
这是“registration/logged_out.html”文件内容:
{% extends "generic_base.html" %}
{% block content %}
<form method="post" action="{% url 'user:logout' %}">
{% csrf_token %}
<button type="submit">Logout</button>
</form>
{% endblock content %}
模板文件位于应用程序“帐户”中。和
app_name = 'user'
这是 generic_base.html 模板内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% block title %}
<title>Donations</title>
{% endblock title %}
</head>
<body>
{% block content %}
{% endblock content %}
</body>
</html>
我尝试了很多方法来解决这个问题,但没有一个有效。 我也看到了 Stack Overflow 上提供的关于这个问题的所有解决方案,但没有一个有效。我还尝试了 Django 内置注销视图
Method Not Allowed (GET): /users/logout/
中的解决方案,但这并没有解决问题。
A
LogoutView
主要有一个 template_name
,因为它是 TemplateView
的子类,是的,但只有在重定向以某种方式指向回 LogoutView
本身时才使用它,但这可能是一个坏主意。
因此,您不要使用
LogoutView
显示要注销的表单,您将注销按钮放在其他视图或所有页面上,然后使用您在问题中提供的表单在那里注销。因此,您可以将此表单放在 navbar 中,如果在 next_page
中指定,它将注销用户并重定向到 LogoutView
指定的页面;或 LOGOUT_REDIRECT_URL
设置 [Django-doc](如果未指定)。