Django,查看请求中的词典列表

时间:2017-04-21 04:55:56

标签: jquery python django dictionary

我的django视图中有一个AJAX请求调用(使用JQuery)。它发送以查看此类数据:

{"cityId": 1, "products_with_priority": [{"id": 1, "priority": 1}, {"id": 2, "priority": 2}, {"id": 3, "priority": 3}, {"id": 4, "priority": 4}, {"id": 5, "priority": 5}]}

在我的django视图中,我试图像这样得到这个列表:

def my_view(request):
    city_id = request.POST.get('city_id')
    products_priorities = request.POST.getlist("products_with_priority")

city_id返回1products_with_priority返回空数组。

如何从请求中接收字典数组?

5 个答案:

答案 0 :(得分:2)

确保您的dataType为json,并对您的数组进行字符串化:

dataType: 'json',
data: {'cityId': 1, 'products_with_priority': JSON.stringify([{"id": 1, "priority": 1}, {"id": 2, "priority": 2}, {"id": 3, "priority": 3}, {"id": 4, "priority": 4}, {"id": 5, "priority": 5}])}

然后在Django视图中使用(标准Python库)json的{​​{1}}方法:

loads()

答案 1 :(得分:1)

将数据转换为json字符串。

并像

一样接收它
data = json.loads(request.POST)

答案 2 :(得分:1)

send your data in a json string to django view and then
Try

def my_view(request):
    data = OrderedDict()
    data = json.loads(request.POST)
    city_id = data['city_id']

答案 3 :(得分:0)

在AJAX请求中,请确保包含标题:

content-type: application/json

然后,如果你像我一样使用Python 3,在Django View中:

def my_view(request):
    received_json = json.loads(request.read().decode('utf-8'))
    products_priority = received_json['products_with_priority']

答案 4 :(得分:0)

如果您要将POST数据发送为jQuery (raw) data,则可以body作为string访问该数据。您可以从中JSON加载它。希望下面的例子可以帮助你。

def my_view(request):
    data = json.loads(request.body)
    city_id = data.get('cityId')
    products_priorities = data.get("products_with_priority")