首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >django - getlist()

django - getlist()
EN

Stack Overflow用户
提问于 2012-06-25 21:12:35
回答 2查看 65.9K关注 0票数 38

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

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

代码语言:javascript
代码运行次数:0
运行
复制
def portfolio_add(request):
    ukeys = request.POST.getlist('ukeys')
    ........etc.......

但是我得到的UKES值是u'[]'。当我只用request.POST检查时,我得到的值是u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"

那么,如何在Django中以列表的形式获取这些值呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-25 22:00:08

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

代码语言:javascript
代码运行次数:0
运行
复制
ukeys = request.POST.getlist('ukeys[]')
票数 93
EN

Stack Overflow用户

发布于 2018-07-25 06:46:31

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

具体来说,$.param函数就是这样做的,它还接受一个参数来覆盖此行为。

全球变更:

代码语言:javascript
代码运行次数:0
运行
复制
// 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; 

每次调用时的更改:

代码语言:javascript
代码运行次数:0
运行
复制
 $.param(data, true);  // true sets traditional mode
// for example:
 $.post('/some/url/', $.param(data, true)).done(callback)

当然,您也可以像雅各布提到的那样,在服务器上使用[]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11190070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档