jquery - 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。
解决方案
如果您想发送 JSON,您应该stringify
传递您传递的对象,并将其设置dataType
为json
:
$.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)
推荐阅读
- mapbox - Mapbox GL-JS:为什么我在正常工作时会出现图像加载错误?
- r - 将特定文件夹移动到 R 中的新文件夹➡
- mongodb - 为什么 mongodump 执行 COLLSCAN?
- mysql - mysql没有读取整个文件,而是在使用“本地加载数据”时跳过行
- centos - 如何在 Centos 上安装 OctoberCMS?
- angular - Angular 2 和 Slim PHP 框架:如何正确转义字符串以在 GET 请求中使用
- jmeter - 如何在 JMeter 中插入请求之间的时间间隔?
- r - 如何识别列中多行的模式并使用 R 填充有关该模式的信息的新列?
- sql - SQL递归获取下一个算法无法正常工作
- matlab - 在 MATLAB 中是否可以在不使用全局变量的情况下将变量保留在内存中?