EDIT
, , :
Django CSRF , , csrf_token. , , csrf, , , ensure_csrf_cookie.
csrf , , :
from django.views.decorators.csrf import ensure_csrf_cookie
@ensure_csrf_cookie
def token_security(request):
return HttpResponse()
, , POST CSRF CSRF-, GET , cookie, POST.
:
( User, ):
class TestLoginApi(APITestCase):
def setUp(self):
self.client = APIClient(enforce_csrf_checks=True)
self.path = reverse("registration:login")
self.user = UserFactory()
def tearDown(self):
self.client.logout()
def _get_token(self, url, data):
resp = self.client.get(url)
data['csrfmiddlewaretoken'] = resp.cookies['csrftoken'].value
return data
def test_login(self):
data = {'username': self.user.username,
'password': PASSWORD}
data = self._get_token(self.path, data)
resp = self.client.post(self.path, data=data)
self.assertEqual(resp.status_code, 200)
etc.
, , cookie GET, Django (. ), , POST {% csrf_token %}.
, ( DRF view.py):
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import ensure_csrf_cookie
@method_decorator(ensure_csrf_cookie)
def get(self, request, *args, **kwargs):
return SomeJson...
, Django Rest Framework , POST csrf ( , ):
from django.views.decorators.csrf import csrf_protect
@method_decorator(csrf_protect)
def post(self, request, *args, **kwargs):
return SomeJson...