🔑Как получить csrf-токен Django: простой и эффективный способ

Чтобы получить CSRF-токен в Django, вы можете использовать встроенный тег {% csrf_token %} в шаблоне, или импортировать функцию csrf.get_token() в представлении или любом другом месте в коде. Вот примеры:

{% csrf_token %}
from django.middleware import csrf
    
token = csrf.get_token(request)

Детальный ответ

Чтобы получить CSRF токен в Django, следуйте этим шагам:

  1. Импортируйте модуль csrf из django.middleware в вашем представлении Django.
  2. Добавьте csrf защиту в ваше представление.
  3. Включите тег CSRF в вашем HTML-шаблоне.
  4. Используйте токен CSRF при отправке формы или выполнении AJAX-запросов.

Шаг 1: Импортируйте модуль csrf

Для использования CSRF защиты в Django, начните с импорта модуля csrf из django.middleware. Обычно это делается в вашем файле views.py.


from django.middleware import csrf
    

Шаг 2: Добавьте CSRF защиту в представление

Чтобы Django применил CSRF защиту к вашему представлению, добавьте декоратор csrf_protect перед функцией представления.


from django.views.decorators.csrf import csrf_protect

@csrf_protect
def my_view(request):
    # Код вашего представления
    

Шаг 3: Включите тег CSRF в HTML-шаблоне

В вашем HTML-шаблоне включите тег csrf_token внутри тега <form>. Это генерирует скрытое поле с CSRF токеном. Например:


<form method="post" action=".">
    {% csrf_token %}
    
</form>
    

Шаг 4: Используйте CSRF токен при отправке формы или AJAX-запросов

В вашем представлении или JavaScript коде, используйте CSRF токен при отправке формы или выполнении AJAX-запросов. В примере ниже показано, как использовать CSRF токен при отправке формы с помощью Django шаблонов и функции fetch.


def my_view(request):
    # Проверяем, что запрос метода POST
    if request.method == 'POST':
        # Получаем данные из формы
        form_data = request.POST
        # Проверяем CSRF токен
        if csrf.get_token(request) != form_data.get('csrfmiddlewaretoken'):
            # Обрабатываем ошибку CSRF
            return HttpResponse('Ошибка CSRF!')
        else:
            # CSRF токен верен, выполняем действия
            # ...
            return HttpResponse('Действие выполнено успешно!')
    else:
        # Обрабатываем запросы GET
        # ...
        return HttpResponse('Привет, GET запрос!')

# Пример использования CSRF токена с AJAX-запросом
function sendAjaxRequest() {
    const csrfToken = document.getElementsByName('csrfmiddlewaretoken')[0].value;
    fetch('/my-ajax-endpoint/', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'X-CSRFToken': csrfToken,
        },
        body: JSON.stringify({foo: 'bar'}),
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));
}
    

Теперь вы знаете, как получить CSRF токен в Django. Следуя этим шагам, вы сможете обеспечить безопасность вашего веб-приложения, защищая его от атак CSRF.

Видео по теме

#12. Аутентификация по токенам. Пакет Djoser | Уроки по Django REST Framework

CSRF (доска)

Implement POST Method Form with CSRF Token in Django | Django Tutorial

Похожие статьи:

Что такое Super Django и как использовать его? 🔥

🔑Как получить csrf-токен Django: простой и эффективный способ