🔑Как получить csrf-токен Django: простой и эффективный способ
Чтобы получить CSRF-токен в Django, вы можете использовать встроенный тег {% csrf_token %}
в шаблоне, или импортировать функцию csrf.get_token()
в представлении или любом другом месте в коде. Вот примеры:
{% csrf_token %}
from django.middleware import csrf
token = csrf.get_token(request)
Детальный ответ
Чтобы получить CSRF токен в Django, следуйте этим шагам:
- Импортируйте модуль csrf из django.middleware в вашем представлении Django.
- Добавьте csrf защиту в ваше представление.
- Включите тег CSRF в вашем HTML-шаблоне.
- Используйте токен 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.