Начиная с 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;
}
Другие вопросы по тегам