django jquery $.get to $.post

2019-08-25 09:19发布

问题:

in django I have

#template
$.get("/places/{{ place.id }}/save/",{description : cadena }

#view
place.description = request.POST.getlist('description')[0]

work ok. but If try change to $.post

#template
$.post("/places/{{ place.id }}/save/",{description : cadena }

#view
print request.POST

nothing happend

solved

my problem, I don't added context_instance=RequestContext(request) in the view of send the $.post for this crsf_token don't exist.

with this change now work

 $.post("/places/{{ place.id }}/save/",{description : cadena, csrfmiddlewaretoken: '{{ csrf_token }}'}

and is necessary {{ csrf_token }} not {% csrf_token %}.
{% csrf_token %} create a <input ...>

回答1:

You're probably running into a Cross Site Request Forgery (CSRF) problem - Django is rejecting the POST because there's no CSRF token. For Ajax, you will need to do some special handling, or mark the view as csrf_exempt. More information about this can be found here: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax