2012-11-26 79 views
21

如何在Jinja2参数列表声明中添加注释?Jinja2内嵌评论

一切我曾试图给出一个错误: jinja2.exceptions.TemplateSyntaxError:意外字符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 -%} 

回答

46

的Jinja2有一个{{ ... }}语句中的不支持。您只能使用以外的以外的语句,然后只能使用{# .. #}## comment

  • {# .. #}只是针对禁用模板部分或添加评论以外的其他Jinja2的语法。你不能嵌套这些。
  • # statement相当于{% statement %},如果是line statements are enabled and so configured
  • ## comment仅在启用了行语句的情况下才起作用,此时它被视为评论。

一般来说,在Jinja语句之外,使用目标语言中的注释来代替;例如<!-- comment -->当生成XML等

+2

外部评论看起来不是那么漂亮在我的情况下:( – kimstik

+0

“'{#..#}'只用于禁用模板的一部分” - 不符合当前的文档,其中它也被用作'{#a comment#}' – timss

+1

@timss:在这个问题的上下文中,这个句子应该被读*,其中OP在块中使用了'{#comment 3#}'是的, '{#...#}'用于评论,包括注释(禁用)模板的一部分。 –