Как освободить CSRF Protection на direct_to_template
У меня есть поток в моем приложении django, в котором я перенаправляю пользователя на другую услугу (например, PayPal), которая после некоторой собственной обработки возвращает пользователя обратно на мой собственный сервер. Точка возврата на моем сервере - это простая страница успеха HTML, которую я обрабатываю с помощью direct_to_template.
По каким-то нечетным причинам другой сервер отправляет запрос POST, и, следовательно, пользователь видит пропущенный токен CSRF, поскольку другой сервер не отправляет обратно токен CSRF.
Как освободить представление direct_to_template из токенов CSRF?
Ответы
Ответ 1
Вы можете использовать декоратор csrf_exempt
, чтобы отключить защиту CSRF для определенного вида.
Скажите, что ваш шаблон URL:
('^my_page/$', direct_to_template, {'template': 'my_page.html'})
Добавьте в свой urls.py
следующий импорт:
from django.views.decorators.csrf import csrf_exempt
Затем измените шаблон url на:
('^my_page/$', csrf_exempt(direct_to_template), {'template': 'my_page.html'})
Ответ 2
Вы можете использовать @csrf_exempt
decorator для токена csrf excempt, для этого вам нужно импортировать
from django.views.decorators.csrf import csrf_exempt
затем напишите @csrf_exempt
перед просмотром
это будет работать правильно:)