在Django视图中检索嵌套的javascript对象作为dict

时间:2014-12-02 00:41:17

标签: javascript jquery python ajax django

我有一个非常简单的视图,它接收包含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}

然而,我得到了无,因为真正的关键是' kwargs [test]'

修改

我知道我可以使用某种正则表达式来实现这一目标,但感觉就像重新发明轮子一样,因为这个用例并不罕见

1 个答案:

答案 0 :(得分:5)

在这种情况下,我建议在服务器和客户端之间来回通信时使用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}