在 Django 视图中检索嵌套的 JavaScript 对象作为字典

Retrieve nested javascript objects in Django view as a dict

本文关键字:对象 JavaScript 字典 嵌套 Django 视图 检索      更新时间:2023-09-26

我有一个非常简单的视图,它接收一个包含javascript对象的ajax请求。jquery 请求如下所示:

$.get(URL, {'kwargs': {test: 1}}, function(data){//whatever})

问题是,请求。GET现在包含一个相当奇怪的密钥,看起来像这样:

{'kwargs[test]': [1]}

如何成功解码?作为旁注,不可能事先知道密钥(测试)

获得的预期格式是一个 python 字典,看起来像请求中的字典。

我试过:

request.GET.get('kwargs', None)

我希望结果是:

{'test': 1}

但是,我得到 None,因为真正的关键是"kwargs[测试]"

编辑

我知道我可以使用某种正则表达式来完成此操作,但它感觉就像"重新发明轮子",因为这个用例并不罕见

在这种情况下,我建议在服务器和客户端之间来回通信时使用JSON。 JSON 旨在以统一的方式处理这些类型的嵌套结构。

看看使用 jQuery $.getJSON 功能,http://api.jquery.com/jquery.getjson/

以下是此结构的外观示例...

贾夫文

var request_data = {kwargs: {test: 1}};
$.getJSON(URL, {data: JSON.stringify(request_data)}, function(data){//whatever})

姜戈

import json
def your_view(request):
    my_json = json.loads(request.GET['data'])

这样做将允许您将包含 JSON 数据的请求解析为您选择的变量 (my_json)。 一旦你用json.loads()的结果分配你的变量,你现在将有一个python对象,其中包含解析的请求的JSON数据,你将能够相应地操作你的对象。

>>> my_json['kwargs']
{u'test': 1}