Python 为什么Jinja代码没有被HTML注释删除?
我只是浪费了一个小时试着调试一些坏掉的东西,结果它是由我试图移除的第一件东西引起的:Python 为什么Jinja代码没有被HTML注释删除?,python,html,jinja2,Python,Html,Jinja2,我只是浪费了一个小时试着调试一些坏掉的东西,结果它是由我试图移除的第一件东西引起的: <!-- <foo>Some HTML with {% if bar.thisWillThrow() %}{{ "Jinja" }}{% endif %} </foo> --> 事实证明,在这个HTML风格的注释中,bar.thisWillThrow仍然被调用,它(因为这是我出现问题的原因)仍然抛出了一个异常,这让我相信这不是问题所在 我知道Jinja的{#评论#},但
<!-- <foo>Some HTML with {% if bar.thisWillThrow() %}{{ "Jinja" }}{% endif %} </foo> -->
事实证明,在这个HTML风格的注释中,bar.thisWillThrow
仍然被调用,它(因为这是我出现问题的原因)仍然抛出了一个异常,这让我相信这不是问题所在
我知道Jinja的{#评论#}
,但我很好奇为什么这不起作用
我能想到的唯一优点是,这允许
,但我无法想象为什么有人想将他们的注释与他们的代码分开,这听起来像一场噩梦!我也无法想象设计师会鼓励登录评论
这种行为有什么好处?因为这是Jinja作为模板引擎的功能。如果你查看a是如何工作的,它会说: 模板处理器(也称为模板引擎或模板 解析器(parser)是一个软件或软件组件,它是 设计用于将一个或多个模板与数据模型组合以生成 一个或多个结果文档
它将您提供给它的任何python数据转换为可读数据。Jinja没有太多关于HTML的知识来解析HTML注释。如果您将Jinja视为任意文本格式(不仅仅是HTML)的模板引擎,则此行为完全有意义。是的,可作为HTML注释中的字符串读取,然后由忽略HTML注释的浏览器进行解释和呈现。@OllieFord这并不意味着HTML内容会完全抑制代码,只要看一下源代码,你就会看到带有相应注释的HTML。哦,我现在看到了,我不明白我以前怎么会错过它!显然,在创建HTML文档的过程中会调用它,然后在浏览器点击注释时忽略任何结果。哦。