首先坚持“方法不允许(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”方法。
注销视图没有模板。您将其放入另一个模板中,用户可以在其中注销。
例如,如果您有主页模板,您可以将其放在那里:
<!-- 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>