【发布时间】:2017-06-07 04:10:31
【问题描述】:
我的 jinja2 模板收到一个代码块,其中可能包含任意数量的不同语言。我想将正确的词法分析器传递给模板并使用 jinja2-highlight 插件(pygments)相应地呈现它。 我使用“command”变量渲染我的模板,该变量是一个字典,包含模板其余部分所需的所有数据。理想情况下,我想按照这些思路做一些事情
{% highlight "{{ command.lexer }}", lineno='table' %}{{ command.script }}{% endhighlight %}
我试过了:
{% highlight command.lexer, lineno='table' %}
{% highlight 'command.lexer', lineno='table' %}
{% highlight '{{ command.lexer }}', lineno='table' %}
甚至
{% set lexer = command.lexer %}
{% highlight 'lexer', lineno='table' %}
{% highlight '{{ lexer }}', lineno='table' %}
我似乎无法弄清楚 jinja2 和 jinja2-highlight / pygments 之间的渲染规则组合。
我真的不想做这样的事情:
{% if command.lexer == 'bash' %}
{% highlight 'bash', lineno='table' %}
{% elif command.lexer == 'perl' %}
{% highlight 'perl', lineno='table' %}
...
{% endif %}
这似乎与 jinja2 解析器类有关,但我有点卡住了..感觉好像我忽略了一些微不足道的事情。
各种错误信息都长这样:
jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got ','
【问题讨论】:
标签: python-3.x jinja2 pygments