Как я могу отключить защиту Django csrf только в определенных случаях?

Я пытаюсь написать сайт в Django, где URL-адреса API совпадают с URL-адресами пользователя -. Но у меня проблемы со страницами, использующими POST-запросы и защиту CSRF. Например, если у меня есть страница /foo/add, я хочу иметь возможность отправлять на нее POST-запросы двумя способами:

  1. Как конечный пользователь (, аутентифицированный с помощью файла cookie сеанса ), отправляющий форму. Для этого требуется защита от CSRF.
  2. Как клиент API (, аутентифицированный с использованием заголовка HTTP-запроса ). Это не удастся, если включена защита CSRF.

Я нашел различные способы отключения CSRF, такие как исключение @csrf _, но все они отключают его для всего представления. Есть ли способ включить/выключить его на более тонком -уровне детализации? Или мне просто придется реализовать собственную защиту CSRF с нуля?

32
задан lucas 7 July 2012 в 10:56
поделиться