django - CSRF의 적용을 CBV에서 제외시키기
1 minute read
간단히 HTTP 메소드 관련 몇 가지 테스트를 위해 django endpoint를 만들었지만
django는 POST
메소드에서는 CSRF verification failed. Request aborted.
에러를 발생시켰다.
CSRF
가 무엇인지는 여기서는 건너뜁니다.
Django의 공식 문서에서는 FBV의 예만 보여주고 있고, CBV에서는 Decorating CBV
으로 구현하라고 한다.
csrf_exempt가 작동하도록 dispatch
메소드에 데코레이터를 붙여야 한다.
이건 뷰 기능 자체의 csrf_exempt 속성을 True로 설정하고, 미들웨어는 가장 바깥 쪽 뷰 기능에서 이를 확인한다.
from django.http import HttpResponse
from django.views.generic import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
class ViewTest(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(ViewTest, self).dispatch(request, *args, **kwargs)
def get(self, request):
response = "get test"
return HttpResponse(response)
def post(self, request, *args, **kwargs):
response = "post test"
return HttpResponse(response)
I feedback.
Let me know what you think of this article in the comment section below!
Let me know what you think of this article in the comment section below!
comments powered by Disqus