Django视图中Jinja2递归循环渲染嵌套字典的HTML输出问题
给定Jinja2代码的渲染输出
最终生成的HTML代码
<li>a Recursive a, {'b': {'c': {}}}<ul><li>b Recursive b, {'c': {}}<ul><li>c</li></ul></li></ul></li>
渲染逻辑说明
- 模板通过在
for循环后添加recursive标记实现嵌套字典的递归遍历,同时使用{%- ... -%}空白符控制语法剔除多余的换行、空格,输出的HTML没有冗余空白字符。 - 分支判断规则:当键对应的value为真值(非空容器、非空值等)时,会输出
Recursive [当前键名], [当前值]文本,同时嵌套<ul>标签,调用loop(value.items())递归遍历当前值下的所有子项;当value为假值(比如c对应的空字典{},布尔判断结果为假)时,仅输出当前键名,不会触发递归分支的文本和嵌套列表输出。 - 上述HTML渲染到网页后,呈现的文本内容和预期完全匹配:
a Recursive a, {'b': {'c': {}}}
b Recursive b, {'c': {}}
c
内容的提问来源于stack exchange,提问作者Jaana
相关产品推荐
相关产品推荐

