Jak mogę wyłączyć ochronę csrf Django tylko w niektórych przypadkach?

Próbuję napisać witrynę w Django, gdzie adresy URL API są takie same jak adresy URL skierowane do użytkownika. Ale mam problemy ze stronami, które korzystają z żądań POST i ochrony CSRF. Na przykład, jeśli mam stronę / foo / add, chcę móc wysyłać do niej żądania POST na dwa sposoby:

Jako użytkownik końcowy (uwierzytelniony przy użyciu pliku cookie sesji) przesyłający formularz. Wymaga to ochrony CSRF.Jako klient API (uwierzytelniony przy użyciu nagłówka żądania HTTP). To się nie powiedzie, jeśli ochrona CSRF jest włączona.

Znalazłem różne sposoby wyłączania CSRF, takie jak @csrf_exempt, ale wszystkie one wyłączają go dla całego widoku. Czy jest jakiś sposób na włączenie / wyłączenie go na bardziej szczegółowym poziomie? Czy po prostu będę musiał wdrożyć własną ochronę CSRF od podstaw?

questionAnswers(2)

yourAnswerToTheQuestion