我想知道在文件中添加包含或宏时是否有任何方法可以保持 jinja 的缩进。我想使用 jinja 生成代码文件。一个例子是
文件:class.html
class MyClass:
def someOp():
pass
{% include "someOp.html" %}
文件:someOp.html
def someOp2():
pass
模板的结果应该是:
class MyClass:
def someOp():
pass
def someOp2():
pass
是否有任何方法可以让 jinja 在包含文件中的每一行的包含标记之前添加缩进?或者有什么方法可以自定义 jinja 来做到这一点?
最佳答案
一种方法是将 include 包装在宏中,然后因为宏是一个函数,所以它的输出可以通过缩进过滤器传递:
class MyClass:
def someOp():
pass
{% macro someop() %}{% include "someOp.html" %}{% endmacro %}
{{ someop()|indent }}
默认情况下“缩进”缩进 4 个空格并且不缩进第一行,您可以使用例如'indent(8)' 进一步缩进,参见 http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters了解更多详情。
如果您所包含的内容首先被定义为宏,则不需要进一步的包装器宏,您可以直接跳到使用缩进过滤器。
关于templates - Jinja 在包含或宏上保留缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10821539/