Начиная с django 4.1, для аутентификации LogoutView требуется запрос POST (не GET): есть ли встроенная форма, чтобы я мог получить CSRF?
По состоянию на 23 августа 2022 г. (через 20 дней после выпуска 4.1) поиск Google не смог найти ответ...!
Итак, спрашиваем на SO.
1 ответ
Встроенной формы нет, потому что для представления требуется только POST-запрос (а для всех POST-запросов требуется токен CSRF, если только CSRF не освобожден), а не какие-либо конкретные данные, которые отправит форма.
Примечания к выпуску для Django 4.1 явно публикуют этот пример фрагмента для формы POST выхода, маскирующейся под ссылку:
<form id="logout-form" method="post" action="{% url 'admin:logout' %}">
{% csrf_token %}
<button type="submit">{% translate "Log out" %}</button>
</form>
#logout-form {
display: inline;
}
#logout-form button {
background: none;
border: none;
cursor: pointer;
padding: 0;
text-decoration: underline;
}