Встроенный в Django LogoutView всегда имеет значение 'GET'
Сначала застрял на "Method Not Allowed (GET): /logout/", нашел answer, изменил шаблон так, чтобы метод был 'POST' (пробовал 'post'), но теперь, несмотря на это, я все еще получаю "Method Not Allowed (GET): /logout/", так как метод все еще 'GET'. То же самое происходит, когда LogoutView.as_view() пуст.
urls.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
Могу ли я изменить метод на 'POST' вместо 'GET' с помощью встроенного LogoutView?
Попытался найти ответы на вопрос "Метод не разрешен (GET): /logout/", но все, что я получил, это изменить метод формы на 'POST', но я все еще получаю метод 'GET'.
У представления выхода из системы нет шаблона. Вы помещаете его в другой шаблон, где пользователь может выйти из системы.
Например, если у вас есть шаблон home, вы можете поместить его туда:
<!-- 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>