我有一个非常简单的视图,该视图接收包含javascript对象的ajax请求。 jQuery请求如下所示:
$.get(URL, {'kwargs': {test: 1}}, function(data){//whatever})
问题是,request.GET现在包含一个相当奇怪的密钥,看起来像这样:
{'kwargs[test]': [1]}
如何才能成功解码?附带说明,不可能事先知道密钥(测试)
获得的预期格式是python dict,看起来像请求中的格式。
我试过了:
request.GET.get('kwargs', None)
我期望这样的结果:
{'test': 1}
但是,我得到的是None,因为真正的钥匙是'kwargs [test]'
编辑
我知道我可以使用某种正则表达式来完成此操作,但是感觉就像是“重新发明轮子”,因为这种用例并不罕见
javascript大神给出的解决方案
对于这种情况,我建议在服务器与客户端之间来回通信时使用JSON。 JSON旨在以统一的方式处理这些类型的嵌套结构。
看一下使用jQuery $ .getJSON功能,
http://api.jquery.com/jquery.getjson/
以下是此结构外观的一个示例...
Javscript
var request_data = {kwargs: {test: 1}};
$.getJSON(URL, {data: JSON.stringify(request_data)}, function(data){//whatever})
Django的
import json
def your_view(request):
my_json = json.loads(request.GET['data'])
这样做将允许您将包含JSON数据的请求解析为您选择的变量(my_json)。在为变量分配json.loads()的结果后,您现在将拥有一个包含已解析的请求JSON数据的python对象,并且您将能够相应地操作该对象。
>>> my_json['kwargs']
{u'test': 1}