在django中传递json并反序列化表单

And*_*rew 4 django json django-forms django-serializer

接下来的问题是:我将一些带有 ajax 的发布数据发送到服务器。这个数据看起来像:

data = {
  form : $(this).serialize(),
  some_array: [2,3,4,1]
}
Run Code Online (Sandbox Code Playgroud)

如何在 Django 中获取表单对象?request.POST['form']返回一个带有表单的字符串。我正在尝试使用import json图书馆。

但是,当我运行时 value = json.load(request.POST['some_array'])form = json.load(request.POST['form']) 它不起作用。

打印request.POST['form']返回以下内容:

u'csrfmiddlewaretoken=I3LWAjfhZRGyd5NS3m9XcJkfklxNhxOR& address_city=%D0%9A%D0%B8%D1%97%D0%B2& address_street=2& address_building=3& delivery_time=2015-05-15'

aum*_*umo 8

表单数据不是用 JSON 编码,而是作为查询字符串。您可以使用urlparse.parse_qs标准库来解析该查询字符串。

例子:

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'))
Run Code Online (Sandbox Code Playgroud)