["python","django"]
@csrf_exempt does not work on generic view based class

class ChromeLoginView(View): def get(self, request): return JsonResponse({'status': request.user.is_authenticated()}) @method_decorator(csrf_exempt) def post(self, request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) return JsonResponse({'status': True}) return JsonResponse({'status': False}) I am expecting that the post does stopped by csrf, but it return 403 error. But if remove that decorator and do this in the URLConf url(r'^chrome_login/', csrf_exempt(ChromeLoginView.as_view()), name='chrome_login'), it will work. What happened here? didn't it supposed to work, because I guess that's what method_decorator do. I'm using python3.4 and django1.7.1 Any advice would be great.
As @knbk said, this is the dispatch() method that must be decorated. Since Django 1.9, you can use the method_decorator directly on a class: from django.utils.decorators import method_decorator @method_decorator(csrf_exempt, name='dispatch') class ChromeLoginView(View): def get(self, request): return JsonResponse({'status': request.user.is_authenticated()}) def post(self, request): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) return JsonResponse({'status': True}) return JsonResponse({'status': False}) This avoids overriding the dispatch() method only to decorate it.