(已解决)Django内置LogoutView总是'GET'

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

首先坚持“方法不允许(GET):/注销/”,找到answer,更改模板,因此方法是“POST”(尝试“发布”),但现在尽管如此,我仍然收到“方法不允许” (GET): /logout/",因为方法仍然是“GET”。当 LogoutView.as_view() 为空时也会发生同样的情况。

url.py

from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import path, include
from users import views as user_views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('register/', user_views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
    path('', include('blog.urls')),
]

完整的 html 文件(/users/templates/users/logout.html)

<form method="POST" >
    {% csrf_token %}
    <button type="submit">logout</button>
</form>

当我访问 http://localhost:8000/logout/ 时出现命令提示符

Method Not Allowed (GET): /logout/
Method Not Allowed: /logout/
[04/Feb/2024 17:30:07] "GET /logout/ HTTP/1.1" 405 0
Method Not Allowed (GET): /logout/
Method Not Allowed: /logout/
[04/Feb/2024 17:30:08] "GET /logout/ HTTP/1.1" 405 0

我可以使用内置 LogoutView 将方法更改为“POST”而不是“GET”吗?

试图找到“不允许的方法(GET):/logout/”的答案,但我得到的只是将表单方法更改为“POST”,但我仍然得到“GET”方法。

python-3.x django django-views
1个回答
0
投票

注销视图没有模板。您将其放入另一个模板中,用户可以在其中注销。

例如,如果您有主页模板,您可以将其放在那里:

<!-- on a template where you want to add a logout button -->
<form method="POST" action="{% url 'logout' %}">
    {% csrf_token %}
    <button type="submit">logout</button>
</form>
© www.soinside.com 2019 - 2024. All rights reserved.