如何在post数据python中接收字典

时间:2016-11-23 06:35:32

标签: python django dictionary parameters request

我试图将数组作为参数发送到使用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参数时,它给出无。 如果有人遇到同样的问题,请帮助我。

1 个答案:

答案 0 :(得分:3)

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

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);
    }
);

Django的

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);
    }
);

Django的

import json

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