【问题标题】:How to receive dictionary in post data python如何在发布数据python中接收字典
【发布时间】:2017-04-07 01:23:29
【问题描述】:

我正在尝试将数组作为参数发送到使用 python 和 django 框架的 api。

这是我用来访问api的客户端代码:

$.ajax(
    type: 'POST',
    url:    'http://example.com/api/users',
    data:   {user:{name:'Rohit Khatri', age:20, father_name:'S.K'},type:'info'},
    complete: function(response) {
        console.log(response);
    }
);

这是我试图访问请求参数的视图

def get_users(request):
    print(request.POST.get('ids'))

当我尝试访问ids 参数时,它给出了无。 如果有人遇到同样的问题,请帮助我。

【问题讨论】:

标签: python django dictionary parameters request


【解决方案1】:

您可以尝试如下获取列表:

request.POST.getlist('ids[]')

注意:如果您以JSON 发送/接收您的数据,您的情况会更好。您首先需要在发送请求时将AcceptContent-Type 标头设置为application/json,然后使用json.loads 将json 转换为python 对象。示例如下:

Javascript/AJAX

$.ajax(
    type: 'POST',
    url:    'http://example.com/api/users',
    contentType: 'application/json'
    data:   {ids:[1,2,3,4,5],type:'info'},
    complete: function(response) {
        console.log(response);
    }
);

姜戈

import json

def get_users(request):
    ids = request.POST.get('ids')
    if ids:
        ids = json.loads(ids)

更新:

如果您需要使用更复杂的数据,例如使用 json 的对象(字典)将是您的最佳选择,它的工作方式与上面的示例非常相似。

Javascript/AJAX

$.ajax(
    type: 'POST',
    url:    'http://example.com/api/users',
    contentType: 'application/json'
    data:   {ids:{"x":"a", "y":"b", "z":"c"}, type:'info'},
    complete: function(response) {
        console.log(response);
    }
);

姜戈

import json

def get_users(request):
    ids = request.POST.get('ids')
    if ids:
        ids = json.loads(ids)

【讨论】:

  • 我已经改变了场景,实际上我想在一个字段中发送字典,而不是列表,你能针对这种情况更新你的答案吗?
  • 使用第一种方式。 request.POST.getlist('ids[]') ?
  • @RohitKhatri 您应该更新了整个示例,您的 AJAX 帖子数据中没有 ids
猜你喜欢
  • 2017-07-03
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多