Search code examples
djangoapirequestresponsecsrf

Using django CSRF middleware with views returning JsonResponse


I want to use CSRF middleware with API Views in Django. Here is a demo view I want to use CSRF with, I am confused how to integrate CSRF here.

def login(request):
    try:
        if len(DemoTable.objects.filter(phone=int(request.POST['user'])).filter(password=sha1Engine(request.POST['password'])))==1:
            print(DemoTable.objects.filter(phone=int(request.POST['user'])).filter(password=sha1Engine(request.POST['password'])))
            return JsonResponse({'exit':'0','msg':'Success'})
        return JsonResponse({'exit':'2','msg':'User Invalid'})
    except Exception as e:
        return JsonResponse({'exit':'10','msg':'Unknown Error Occured'})

Any help or suggestions will be appreciated. Thanks.


Solution

  • You can get the token with django.middleware.csrf.get_token(request)

    And then set it in the header of the requests made client-side https://docs.djangoproject.com/en/2.0/ref/csrf/#setting-the-token-on-the-ajax-request