大佬教程收集整理的这篇文章主要介绍了javascript – Django:从QueryDict读取JSON对象的数组,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道可以使用json格式化(simplejson等),但是我以某种方式感觉到QueryDict本身在我的情况下是格式错误的或重新格式化的?
当通过AJAX向Django视图传递JSON对象[{“id”:1},{“id”:2},{“id”:3})的数组时,QueryDict的格式为:
POST:<QueryDict: {u'json_data[0][id]': [u'1'],u'type': [u'clone'],u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'],u'json_data[1][id]': [u'2'],u'json_data[2][id]': [u'3']}>
如何通过json_data进行迭代?
我想得到这样的东西:
POST:<QueryDict: {u'json_data': [{u'id': [u'1']},{u'id': [u'2']},{u'id': [u'3']}]},u'type': [u'clone']>
@R_240_9447@使用QueryDict作为字典,并将json_data作为列表检索,并以一定的顺序进行处理:也许只需按顺序列表顺序遍历它们.
就像是:
ret = request.POST for item in ret['json_data']: process(item['id'])
实际上,进入process()的值可能是另一个键值对的字典而不是一个数字(1,2,3等)
使用Javascript:
var test = [{"id": 1},{"id": 2},{"id": 3}]; $.post( "/insert_tc",{ json_data: test,"type": 'clone',"csrfmiddlewaretoken": $csrf_token },function(json) { //CALLBACK },"json" );
views.py:
def insert_tc(request): if request.method == 'POST': ret = request.POST type = ret['type'] list = ret.getlist(ret)
但是列表返回空[]
我尝试simplejson转储,加载,项目,获取方法,但没有一个帮助.
我甚至尝试jQuery.param(obj,truE),但这不是我想要的(虽然有点接近).
有没有不同的/更好的方式来传递复合数据结构Django< - > JS通过AJAX?
JavaScript的:
var test = [{"id": 1},{ json_data: JSON.Stringify(test),"json" );
视图:
import json def insert_tc(request): if request.method == 'POST': ret = request.POST type = ret['type'] list = json.loads(ret['json_data'])
以上是大佬教程为你收集整理的javascript – Django:从QueryDict读取JSON对象的数组全部内容,希望文章能够帮你解决javascript – Django:从QueryDict读取JSON对象的数组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。