将Javascript字典转换为Python字典

4 投票
1 回答
2553 浏览
提问于 2025-04-17 17:54

在我的Django应用程序中,我有一个地方会发起一个Ajax请求,去调用我的视图。

$.post("/metrics", {
  'program': 'AWebsite',
  'marketplace': 'Japan',
  'metrics': {'pageLoadTime': '1024'}
});

在我的Python代码中,我有

@require_POST
def metrics(request):
    program = request.POST.get('program', '')
    marketplace = request.POST.get('marketplace', '')
    metrics = request.POST.get('metrics', '')
    reportMetrics(metrics, program, marketplace)

这个metrics()函数应该是用来调用reportMetrics(),并传入一些参数,这些参数最终会记录到日志文件里。但是在我的日志文件中,我没有看到'pageLoadTime'这个值——可能是因为它是以字典的形式传入的。将来我还需要添加更多的内容,所以它需要保持为字典格式(而不是像前两个那样是字符串)。

那么,有什么简单的方法可以把这个从JavaScript传来的字典转换成Python的字典呢?

相关问题:

1 个回答

7

把JavaScript的字典发送为JSON格式,然后在Python中导入json模块来提取数据。你可以使用json.loads(jsonString)来完成这个操作。

编辑 - 添加示例

$.post("/metrics", {
   data: JSON.stringify({
      'program': 'AWebsite',
      'marketplace': 'Japan',
      'metrics': {'pageLoadTime': '1024'}
   })
});

然后在Python那边

import json
def metrics(request):
    data = json.loads(request.POST.get('data'))
    program = data.get('program','')
    marketplace = data.get('marketplace','')
    metrics = data.get('metrics','')

我现在没有很好的方法来测试这个,但我相信它应该能工作。你可能还需要检查一下某个字段是否为空,不过我觉得.get()这个方法会帮你处理这个问题。

撰写回答