python – Jinja2中的宏递归

前端之家收集整理的这篇文章主要介绍了python – Jinja2中的宏递归前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Jinja 2.8模板引擎.我正在尝试编写一个模板,它将遍历树结构并从该树输出信息.要做到这一点,我试图使用一个调用自己的宏,似乎不起作用.

这个简单的递归宏也不起作用:

@H_404_7@{% macro factorial(n) %} {% if n > 1 %} {{ n }} * {{ factorial(n-1) }} {% endif %} {% endmacro %} {{ factorial(3) }}

在Jinja代码的第三行引发运行跟随错误.

@H_404_7@UndefinedError: 'factorial' is undefined

Jinja是否支持递归宏?如何在Jinja中遍历嵌套数据结构?

最佳答案
Jinja支持递归宏.
关于阶乘代码,以下代码适用于我:

@H_404_7@{% macro factorial(n,return_value) -%} --{{n}} {%- if n > 1 -%} {%- set return_value = n * return_value %} {#- perform operations on the variable return_value and send it to next stage -#} {{- factorial(n-1,return_value) -}} {%- else -%} {# Output the return value at base case #} {{ return_value }} {%- endif %} {%- endmacro %} {{ factorial(7,1) }}

我得到的输出

@H_404_7@ --7--6--5--4--3--2--1 5040

猜你在找的Python相关文章