我正在努力从Watson的NLU API打印格式化的JSON响应。我使用的是python2.7和django1.11。我的视图.py看起来像这样:
def nlu_analysis(request):
if request.method == 'POST':
text2send = request.POST.get('text2send')
natural_language_understanding = NLUV1(
version='2017-02-27',
username='####',
password='####')
response = natural_language_understanding.analyze(
text=text2send,
features=[features.Entities(), ... features.SemanticRoles()])
parsedData = json.dumps(response, indent=2)
return render(request, 'analysis.html', {'data': parsedData})
我的分析.html看起来像这样:
^{pr2}$所有这些操作的结果是数据,JSON括号打印在一行上,如下所示:
{“语义角色”:[{“action”:{“text”:“are”,“verb”:{“text”:“be”,“时态”:“present”},“normalized”:“be”},“句子”:“蝙蝠侠和超人在与坏人战斗”关键词“[{“关联性”:0.931284,“文本”:“坏人”},{“关联性”:0.790756,“文本”:“超人”},{“关联性”:0.752557,“文本”:“蝙蝠侠”}]}
如果我在这个循环中运行
<div class="container text-left">
{% for d in data %}
<p>{{ d }}</p>
{% endfor %}
</div>
它只是在每行的字符上打印
{
“
s
e
m
...
暗示{data}}是一个字符串,仅此而已。在
很明显,我根本上误解了什么。或者是关于如何json.dumps文件(包括'indent=2')工作或如何在我的模板中正确处理它。我怀疑是后者,因为通过'data'传递的信息显然包含了所有的JSON语法。如果我把上面的一行结果放入一个JSON验证器,它将重新格式化并完美地验证。在
对一个菜鸟有什么帮助吗?谢谢。在
如果要访问dict对象中键的值,只需这样做(对于示例数据)
这里,
semantic_roles
将被解释为一个文本字符串,并且不使用变量“semantics”的值(如果模板上下文中存在)。而response
是上下文变量的名称。在或者,如果您想使用循环获取dict对象中每个键的值,则可能需要为模板创建一个自定义过滤器
^{pr2}$在你的模板中
当然,请确保在模板标记上调用load,以便渲染器可以看到它们。在
这里有一些有用的链接
https://docs.djangoproject.com/en/1.11/ref/templates/api/#variables-and-lookups
Accessing dictionary by key in Django template,
https://code.djangoproject.com/ticket/3371
http://stackoverflow.com/questions/25266672/access-a-dictionary-element-in-the-django-template-with-a-variable&grqid=f2CFq5XB&hl=en-IN
你为什么还要分析你的回答呢。
json.dumps
将dict
对象转换为字符串。您可以直接将其用作return render(request, 'analysis.html', {'data': response})
。在相关问题 更多 >
编程相关推荐