如何在Django模板中渲染JSONField中的任意键值对?
Django模板渲染JSONField未知键的遍历解决方案
问题场景
我给前端加调试信息,把数据存在JSONField里,后端存读都没问题,但在Django模板渲染时踩了好几个坑:
- 用
{{ log.log_data.key }}只能显示键名,拿不到对应的值 - 用
{{ log.log_data | pprint }}输出的是被HTML扁平化的纯文本JSON,完全不利于调试查看 - 试了
{{ log.log_data[key] }}直接报错:Could not parse the remainder
翻了不少资料,都没针对JSONField未知键的场景,最后才搞清楚问题所在。
解决办法
Django模板不是标准Jinja2,遍历JSONField的键值对时,不能给items加括号:
正确遍历写法:
{% for key, value in log.log_data.items %} <p>{{ key }}: {{ value }}</p> {% endfor %}
之前踩坑的错误写法(带括号会触发模板语法错误):
{% for key, value in log.log_data.items() %} ... {% endfor %}
用正确的写法就能正常遍历JSONField里的所有未知键值对,调试信息能正常展示在页面上。
内容的提问来源于stack exchange,提问作者Shadur-don't-feed-the-AI
相关产品推荐
相关产品推荐

