我只是浪费了一个小时试图调试破坏的东西,结果是我试图删除的第一件事造成的:
<!-- <foo>Some HTML with {% if bar.thisWillThrow() %}{{ "Jinja" }}{% endif %} </foo> -->
事实证明,通过这种HTML风格的评论,仍然会调用bar.thisWillThrow
,这(因为它是我的问题的原因)仍然引发了异常,让我相信这不是问题线。
我知道Jinja的{# comments #}
,但我很好奇为什么这不起作用。
我能想到的唯一优势就是这允许<!-- {{ foobar.comments }} -->
,但我无法想象为什么有人想要将他们的评论与他们的代码分开,这听起来像是一场彻头彻尾的噩梦!我也无法想象设计师会想鼓励记录评论。
这种行为有什么用呢?
答案 0 :(得分:1)
Jinja没有太多关于HTML的知识来解析HTML评论。如果您将Jinja视为任意文本格式(不仅仅是HTML)的模板引擎,那么这种行为就非常有意义。
答案 1 :(得分:0)
因为那是Jinja的模板引擎功能。如果您查看template engine的工作原理,它会说:
模板处理器(也称为模板引擎或模板 解析器)是一个软件或软件组件 旨在将一个或多个模板与数据模型相结合来生成 一个或多个结果文件。
它将您提供的任何python数据转换为可读数据。