【问题标题】:Print key-value in JSON object in HTML with Django使用 Django 在 HTML 中打印 JSON 对象中的键值
【发布时间】:2017-04-30 12:44:04
【问题描述】:

我在字符串中有一个 JSON 对象,看起来像 '{"key1":"value1", "key2": "value2", "key3": "value3"}'

我可以使用json.loads 将其转换为 JSON 对象,但是当我尝试在 HTML 中打印它时,它会像

一样打印整个 JSON 对象

{"key1":"value1", "key2": "value2", "key3": "value3"}

我的函数看起来像:

def jsonPretty(json_string):
    return json.loads(json_string)

在 HTML/Django 中:

{{kvpair|jsonLoadsPretty}}

我希望它打印出来

key1 value1 key2 value2 key3 value3

格式可能略有不同,但我希望每个键值对用\n 分隔,并且应该删除括号。

最好的方法是什么?

编辑:

我在运行 for 循环之前使用{% with kvpair|jsonPretty as kvjson %}

{% for k, v in kvjson.items %}
    <p> {{k}} {{v}}</p>

现在它工作正常。感谢@Andrey Shipilov 的帮助!

【问题讨论】:

    标签: python html json django


    【解决方案1】:
    {% for key, value in kvpair %}
        <p>{{ key }} {{ value }}</p>
    {% endfor%}
    

    https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#for

    【讨论】:

    • kvpair 是一个字符串,所以我在使用 for 循环之前先尝试了 json.loads。但是它返回错误:TemplateSyntaxError: Could not parse some characters: |{{kvpair||jsonLoadsPretty}}
    • 从您的字符串中创建一个 JSON 对象,然后将其传递给模板。然后你就可以在上面做{% for %}了。
    • 我使用的是上面写的jsonPretty函数。我的 HTML 行现在看起来像 {% for k, v in kvpair|jsonPretty %}。如果我只输出k,它会给我密钥,但输出 k,v 会以某种方式再次使其成为字符串并返回密钥的前 2 个字符.....
    • 试试{% for key, value in kvpair.items %}
    • 我首先将该函数的结果设置为一个变量,然后 for 循环开始工作。谢谢!
    【解决方案2】:

    适用于 {% 作为键,值在 kvpair 中。items %}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2013-10-20
      • 2022-11-12
      相关资源
      最近更新 更多