【问题标题】:How do I retrieve a list of dictionaries from request.GET?如何从 request.GET 中检索字典列表?
【发布时间】:2013-01-28 03:03:39
【问题描述】:

如果我提出这样的要求:

$.ajax({
  url: '/some/url/',
  data: {
    normal_list: [1,2,3],
    dict_list: [{foo:'a'}, {bar:'b'}]
  }
})

...那么我似乎无法使用getlistrequest.GET 中获取dict_list。这是我设置断点时看到的:

ipdb> request.GET
<QueryDict: {u'dict_list[1][bar]': [u'b'], u'normal_list[]': [u'1', u'2', u'3'], u'dict_list[0][foo]': [u'a']}>
ipdb> request.GET.getlist('normal_list[]')
[u'1', u'2', u'3']
ipdb> request.GET.getlist('dict_list[]')
[]

我如何从 django 的这个请求中得到正确的 dict_list 值?

编辑:我可以让它与dict_list: JSON.stringify([{foo:'a'}, {bar:'b'}]) 一起工作,但我希望能够以与内容无关的方式发送数据。

【问题讨论】:

  • 这个请求看起来很乱。您不应该在 javascript 端序列化为字符串吗?
  • @goncalopp jQuery.ajax 接受 data 的对象或字符串。
  • 我会尝试使用 firebug/tamper data(如果您使用 firefox)检查上传的数据,或者将请求指向 netcat

标签: python django dictionary httprequest http-get


【解决方案1】:
 $.ajax({
    type: "POST",
    url: '/some/url/',
    data: {
       'normal_list[]': [1,2,3],
       'dict_list[]': [{foo:'a'}, {bar:'b'}],
       'csrfmiddlewaretoken': '{{csrf_token}}'
    }
    contentType: "application/json;charset=utf-8",
    dataType: "json",
    success: function(data) { 
       //Message here or show data
    },
    error: function(ts) { 
        //Message here
        alert(ts);         
    }
 })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多