首页 > 解决方案 > json到django请求

问题描述

尝试使用 jquery 将自定义 json 数据传递给 django,但 django 无法正确接收数据。数据样本:

var data = {};
data.mylist = [{'a':'b'},{'a':'b'}];
data.myvar = 'something';
data.action = 'submit_invoice'
$.post(window.invoice_url, data, function(res){
    console.log(res)
});

Django视图:

def foo(request):
    mylist = request.POST.getlist('mylist',None)
    myvar = request.POST.get('myvar', None)
    print(mylist)
    print(myvar)
    print(request.POST)

打印是某物,[] 和 < QueryDict: {'action': ['submit_invoice'], 'mylist[1][a]': ['b'], 'myvar': ['something'], 'mylist [0][a]': ['b']} > 并且 django 无法正确获取 mylist。

标签: jquerydjangopostrequest

解决方案


如果您想发送 JSON,您应该stringify传递您传递的对象,并将其设置dataTypejson

$.post(window.invoice_url, JSON.stringify(data), function(res){
    console.log(res)
}, 'json');

在您的 Django 视图中,您应该使用 加载请求的主体json.loads(),之后您可以访问所需的属性:

import json

def foo(request):
    data = json.loads(request.body.decode('utf-8'))
    mylist = data['mylist']
    myvar = data['myvar']
    print(mylist)
    print(myvar)

推荐阅读