Django:重建通过$ .post发送的结构化参数

时间:2011-02-04 14:32:12

标签: jquery ajax django post

我正在发送带有结构化后期数据的Ajax请求():

$.post(
    myUrl,
    {
         items: [{code: 'a', description: 'aaa'},
                {code: 'b', description: 'bbb'}]
    })

我在request.POST中看到的是:

<QueryDict: {u'items[0][code]': [u'a'],
             u'items[0][description]': [u'aaa'],
             u'items[1][description]': [u'bbb'],
             u'items[1][code]': [u'b']}>

如何处理获取原始items的请求?

(请注意,request.POST.get('items')不起作用)

3 个答案:

答案 0 :(得分:5)

我建议您将对象发布为JSON。在Django中,您可以通过将JSON解析为python对象来重新创建结构。

使用jQuery发布JSON

$.post(
    myUrl,
    JSON.stringify({
         items: [{code: 'a', description: 'aaa'},
                {code: 'b', description: 'bbb'}]
    })
)

在Django视图中解析JSON

from django.http import HttpResponse
from django.utils import simplejson

def my_view(request):
    if request.method == 'POST':
        json_data = simplejson.loads(request.raw_post_data)
        # json_data contains your objects
        print json_data['items']

    return HttpResponse("Got data")

答案 1 :(得分:4)

我为Django / Python创建了一个特殊的库来处理通过请求发送的结构化数据。你可以在GitHub上找到它here

答案 2 :(得分:1)

您可以尝试:

request.POST.getlist('items')