用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序列化