Django接收JavaScript传递的数组

在Django Web开发中,通常需要进行前后端数据交互。当JavaScript向Django发送包含数组的数据时,不能直接使用type: 'json',因为这会导致在Django视图中通过request.POST.get获取数据时返回None。解决方法是使用JSON.stringify将数组转换为JSON字符串,确保数据正确传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Django开发Web的时候,经常需要进行前后端数据的传送

前端往后端传:用ajax,或者用表单form

后端往前端传:view-->HTML中可以用Django中的模板{{data}}和{%block%};view-->JavaScript用json.dumps()

当前端往后端传数据时,如果是纯json的数据,则ajax中的type:'json’即可,但是如果字典里面的一对key-value中的value是数组怎么办呢。

如果我们依旧使用type:'json'这样传数据的话,则views中request.POST.get('key')则会出现None错误

<script>
var user_rate=[1,2,3,4,5];
var task = {
                    'tag': 'submit', // 提交表单标识
                    'task_name': $('#task_name').val(),
                    'task_priority': $('#task_priority').val(),
                    'service_url': $('#service_url').val(),
                    'run_time': $('#run_time').val(),
                    'expect_slaves': $('#expect_slaves').val(),
                    'users_rate':users_rate,
                };

$.ajax({
                    url: "/tasks_manager/create_task",
                    type: 'POST',
                    headers: {"X-CSRFToken": Cookies.get('csrftoken')},  // 从Cookie取csrf_token,并设置ajax请求头
                    data:task,
                    dataType: "json",
                    traditional:true,//防止深度序列化,但是没用,后台会得到object  object
                    async: false,
                    // 请求成功调用的函数
                    success: function(res){
                        console.log(res);

                    },
                    // 请求出错时调用的函数
                    error:function(){
                        alert("提交创建任务失败");
                    }
                });
</script>

所以我们上面的代码要用JSON.stringify(user_rate),把数组进行json序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值