python - 如何在发布数据python中接收字典

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

这是我尝试访问请求参数的 View

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

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

最佳答案

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

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

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

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)

关于python - 如何在发布数据python中接收字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40757608/

相关文章:

django - 不支持的操作数类型 - : 'DateField' and 'DateField'

django - django 项目下拉 Bootstrap 中的登录表单

python - Pygame快速像素读取

python - 使用 Numpy 进行线性回归

python - 本地字段与类似名称的字段发生冲突

c++ - 将 vector 放入 map

java - API 24 Android 以下设备的 getOrDefault 替代方法

python - 将 exec() 与递归函数一起使用

python - KerasRegressor 决定系数 R^2 分数

python - 将字典展平为格式化字符串