CSRF token missing or incorrect even though I have {% csrf_token %}

后端 未结 2 2208
不知归路
不知归路 2021-02-20 18:32

I have been getting this error referring to this method in my views.py file:

def AddNewUser(request):
    a=AMI()
    if(request.method == \"POST\"):
        pri         


        
相关标签:
2条回答
  • 2021-02-20 18:53

    NOTE: The RequestContext has to be used in both the view that serves the form as well as the view that receives the post. If you follow directions above and still doesn't work, this might be the problem! It was for me.

    0 讨论(0)
  • 2021-02-20 18:57

    You have to use a RequestContext object to get the context, then pass the results in to your render_to_response() function. RequestContext adds in a required CSRF token.

    from django.template import RequestContext
    from django.shortcuts import render_to_response
    
    csrfContext = RequestContext(request)
    return render_to_response(some_template, csrfContext)
    

    As a side note, you can also use RequestContext to add contexts/dictionaries intended for the template. For instance, I frequently use:

    initialData = {'form': theForm, 'user_status': 'online'}
    csrfContext = RequestContext(request, initialData)
    return render_to_response(show_template, csrfContext)
    

    As a (brief) explanation of what RequestContext does: most middleware creates something called a context processor, which is simply a function that supplies a context (dictionary) of variables. RequestContext looks for all the available context processors, gets their contexts, and appends them all to a single (giant) context.

    0 讨论(0)
提交回复
热议问题