django - getlist()

时间:2012-06-25 13:12:35

标签: python django

我刚刚发布了这个问题jQuery - passing arrays in post request,我不会在post请求中发送数组,但是jQuery代码没有问题。

问题在于在django中接收POST请求。我确实喜欢这个。

def portfolio_add(request):
    ukeys = request.POST.getlist('ukeys')
    ........etc.......

但是我将ukeys值设为u'[]'。当我使用request.POST进行核对时,我得到的值为u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"

那么,如何将这些值作为Django中的列表获取?

谢谢!

2 个答案:

答案 0 :(得分:75)

jQuery POST的后缀为[]的数组,因为PHP和一些Web框架理解该约定,并自动为您重新构建服务器端的数组。 Django不会那样工作,但您应该能够通过以下方式访问数据:

ukeys = request.POST.getlist('ukeys[]')

答案 1 :(得分:1)

我遇到了同样的问题-Jakub是正确的,[]对其他Web框架很有用,但是jQuery的行为可以更改(我不喜欢varname[]格式)。

$.param函数专门用于执行此操作,并且它还接受一个参数来覆盖此行为。

全局更改:

// put this early in your JS, preferably the first one imported after jQuery
//     or before the document.ready function if using inline js
jQuery.ajaxSettings.traditional = true; 

根据每次通话进行更改:

 $.param(data, true);  // true sets traditional mode
// for example:
 $.post('/some/url/', $.param(data, true)).done(callback)

当然,您也可以按照雅库布(Jakub)的说法在服务器上使用[]