【问题标题】:Jinja2 inline commentsJinja2 内联注释
【发布时间】:2012-11-13 18:35:40
【问题描述】:

如何将 cmets 放入 Jinja2 参数列表声明中?

我尝试过的一切都会出错: jinja2.exceptions.TemplateSyntaxError: unexpected char u'#'

{{ Switch('var',
    [('1', 'foo'),    #  comment 1
     ('2', 'bar'),    ## comment 2
     ('3', 'rum'),    {# comment 3 #}
     ]) }}


{% macro Switch(var, caselist) %}
    {% for case, action in caselist%}
        CMP  {{var}} {{case}} 
        JNE  {{LABEL}}
        {{action}}
        JMP  {{LABELF}}
{{LABEL}}:  NOP
    {%- endfor %}
{{LABELF}}: NOP
{%- endmacro -%}

在我的例子中,Jinja2 被用作汇编程序的宏预处理器。

【问题讨论】:

标签: python macros jinja2 comments


【解决方案1】:

我试图将 cmets 添加到 Martijn Pieters。

{% .. %} = {# .. #}

{{ .. }} = {# .. #}(同上)

【讨论】:

    【解决方案2】:

    现在Jinja2有评论声明:

    {% comment %}
    
        <html code/>
        {% some other statements %}
        {{ some.values }}
    
    {% endcomment %}
    

    【讨论】:

    • 我可以在 {{ ... }} 语句中使用它吗?
    • @kimstik,对不起,我不理解你的问题。但我正在编辑我的答案,请看
    • 我喜欢你的方法。保持好奇心和动力。深入探索
    • 由于某种原因,我仍然没有{% comment %},但后来我用:{% if False %} 代替,我想这是同样的想法。
    • jinja2.exceptions.TemplateSyntaxError: 遇到未知标签“评论”。
    【解决方案3】:

    Jinja2 不支持 {{ ... }} 语句中的 cmets。您只能在此类语句之外使用 cmets,然后只能使用 {# .. #}## comment

    • {# .. #} 仅用于禁用模板的一部分或添加 cmets outside 其他 Jinja2 语法。你不能嵌套这些。
    • # statement 等效于{% statement %},如果line statements are enabled and so configured
    • ## comment 仅在启用 line 语句时有效,此时它被视为注释。

    通常,在 Jinja 语句之外,在目标语言中使用 cmets;例如&lt;!-- comment --&gt;生成XML时等

    【讨论】:

    • 在我的情况下,外部 cmets 看起来不那么漂亮:(
    • "{# .. #} 仅用于禁用模板的一部分" - 与当前文档不匹配,它也用作{# a comment #}
    • @timss:这句话应该在这个问题的上下文中阅读,其中 OP 在一个块中使用{# comment 3 #}。是的,{# ... #} 用于注释,包括注释掉(禁用)模板的一部分。
    猜你喜欢
    • 2012-03-18
    • 2012-10-19
    • 2012-10-20
    • 2017-04-14
    • 2015-06-26
    • 2012-01-22
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多