为什么 Jinja 代码没有被 HTML 注释删除



我只是浪费了一个小时试图调试损坏的东西,结果证明是由我尝试删除的第一件事引起的:

<!-- <foo>Some HTML with {% if bar.thisWillThrow() %}{{ "Jinja" }}{% endif %} </foo> -->

事实证明,对于这个 HTML 风格的注释,仍然调用了 bar.thisWillThrow,它(因为它是我问题的原因)仍然抛出了一个异常,导致我相信这不是有问题的行。

我知道金贾的{# comments #},但我很好奇为什么这不起作用。

我能想到的唯一优点是这允许<!-- {{ foobar.comments }} -->,但我无法想象为什么有人想将他们的注释与代码分开,这听起来像是一场噩梦!我也无法想象设计师会想要鼓励登录评论。

这种行为有什么好处?

Jinja对解析HTML注释的HTML没有那么多了解。如果您将 Jinja 视为任意文本格式(不仅仅是 HTML)的模板引擎,则此行为是完全有意义的。

因为这是Jinja作为模板引擎的功能。如果您查找模板引擎的工作原理,它会说:

模板

处理器(也称为模板引擎模板) 解析器)是一个软件或软件组件 旨在将一个或多个模板与数据模型相结合以生成 一个或多个结果文档。

它将您提供给它的任何python数据转换为可读数据。

最新更新