41

我刚刚发布了这个问题jQuery-passing arrays in post request,我没有在 post request 中发送数组,但是 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 中将这些值作为列表获取?

谢谢!

4

2 回答 2

95

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

ukeys = request.POST.getlist('ukeys[]')
于 2012-06-25T14:00:08.173 回答
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 提到的服务器上的 。

于 2018-07-24T22:46:30.857 回答