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})
Я ожидаю, что сообщение остановится на csrf, но оно вернет ошибку 403.@csrf_exempt не работает в классе общего класса
Но если удалить этот декоратор и сделать это в URLconf
url(r'^chrome_login/', csrf_exempt(ChromeLoginView.as_view()), name='chrome_login'),
он будет работать.
Что здесь произошло? он не должен работать, потому что я думаю, что это то, что делает method_decorator. Я использую python3.4 и django1.7.1
Любые советы были бы замечательными.
Вы должны заглянуть в django_braces ... – rnevius
@rnevius очень благодарен, никогда не знаю этот mixin lib для django раньше. – castiel
Это супер круто! Тем более, что вы можете просто добавить к своему представлению [CsrfExemptMixin] (https://django-braces.readthedocs.org/en/v1.4.0/form.html#csrfexemptmixin), чтобы сделать эту работу. Это почти как обман ... – rnevius