django LoginView 中的一个大问题

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

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/
中的解决方案,但这并没有解决问题。

python django django-views django-forms
1个回答
0
投票

A

LogoutView
主要有一个
template_name
,因为它是
TemplateView
的子类,是的,但只有在重定向以某种方式指向回
LogoutView
本身时才使用它,但这可能是一个坏主意。

因此,您不要使用

LogoutView
显示要注销的表单,您将注销按钮放在其他视图或所有页面上,然后使用您在问题中提供的表单在那里注销。因此,您可以将此表单放在 navbar 中,如果在
next_page
中指定,它将注销用户并重定向到
LogoutView
指定的页面;或
LOGOUT_REDIRECT_URL
设置 [Django-doc]
(如果未指定)。

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