The issue is next: I send some post data with ajax to server. This data looks like:
data = {
form : $(this).serialize(),
some_array: [2,3,4,1]
}
How to get form object in django? request.POST['form']
returns a string with a form. I'm trying to use import json
library.
But, when I run
value = json.load(request.POST['some_array'])
or
form = json.load(request.POST['form'])
it doesn't work.
Printing request.POST['form']
returns the following:
u'csrfmiddlewaretoken=I3LWAjfhZRGyd5NS3m9XcJkfklxNhxOR& address_city=%D0%9A%D0%B8%D1%97%D0%B2& address_street=2& address_building=3& delivery_time=2015-05-15'
The form data is not encoded in JSON but as a query string.
You can use urlparse.parse_qs
from the standard library to parse that query string.
Example:
from urlparse import parse_qs
form_data = parse_qs(request.POST['form'].encode('ASCII')) # Query strings use only ASCII code points so it is safe.
# To access address_city:
address_city = form_data['address_city'][0].decode('utf-8')
# If you plan to pass form_data to a Django Form,
# use QueryDict instead of parse_qs:
from django.http import QueryDict
form_data = QueryDict(request.POST['form'].encode('ASCII'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With