将Javascript字典转换为Python字典
在我的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()这个方法会帮你处理这个问题。