【问题标题】:Weird parsing json response via django-template通过 django-template 奇怪的解析 json 响应
【发布时间】:2019-09-15 21:00:27
【问题描述】:

我正在尝试解析从 get 请求到 rest api 的 json 响应。 让我告诉你我的意思是“奇怪”。

我的views.py

def about_abc(request, host_id):
    response = requests.get(
        'abc.net:1768/abc/api/v1/about',
        verify='cert/cacerts.pem',
        headers={'Accept': 'application/json', 'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxxx'},
    ).json()
    context = {'response': response}
    return render(request, 'itpassed/about.html', context)

现在,当我把我的模板 about.html

{{ response }}

在网络浏览器中我得到正常的,未解析的响应(至少看起来像这样)

{'version': '3.3.2', 'level': 'SP2', 'system': 'unix', 'server_time': '1556275198000', 'server_utc': '2', 'multinode_enabled': 'NO', 'cg_enabled': 'NO', 'instance_id': 'hostname'}

但是当我输入 about.html

{% if response %}
    {% for id in response %}
        <p>{{ id }}</p>
    {% endfor %}
{% else %}
    <p>No IDs are available.</p>
{% endif %}

我得到没有值的 id:

version

level

system

server_time

server_utc

multinode_enabled

cg_enabled

instance_id

根据我在模板中只有 {{ response }} 的浏览器中看到的,整个响应被传递(ids 和它们的值)。 如何解析这个看起来或多或少像这样:

version: 3.3.2

level: SP2

system: unix

server_time: 1556275198000

server_utc: 2

multinode_enabled: NO

cg_enabled: NO

instance_id: hostname

【问题讨论】:

  • {% for id in response %} 迭代字典键。它也可以在常规 Python 中使用。您需要查看迭代字典。

标签: python json django django-templates django-views


【解决方案1】:

您可以通过以下方式访问模板中的键和值:

{% if response %}
    {% for key,value in response.items %}
        <p>{{ key }}: {{ value }}</p>
    {% endfor %}
{% else %}
    <p>No IDs are available.</p>
{% endif %}

【讨论】:

  • 我这样编辑它:&lt;p&gt;{{ id }}: {{ response.id }}&lt;/p&gt; 但只有“:”被添加到 ids。似乎没有什么像 response.id
  • 我只是在几秒钟前就这样做了 :) 感谢您的回答,因为这无论如何都引导了我 :)
猜你喜欢
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
相关资源
最近更新 更多