4

在我的 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)

python中的metrics()函数应该reportMetrics()使用这些参数调用,然后应该进入日志文件。但是在我的日志文件中,我没有看到“pageLoadTime”值——可能是因为它是作为字典传入的。将来我需要为此添加更多项目,因此它需要保留一个字典(而不是像前两个那样的字符串)。

将此传入的 javascript 字典转换为 python 字典的最简单方法是什么?

4

1 回答 1

6

将 javascript 字典作为 json 发送并导入 pythonjson模块以将其拉回。您将使用 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()会为您处理。

于 2013-03-04T19:27:16.803 回答