我正在尝试使用jinja2
模板。我有一个名为highlight
的自定义过滤器,它接受字符串和语言名称,并将它们传递给pyhments
以获取代码。我试着这样使用它:
{% filter highlight("python") %}
import sys
def main():
pass
{% endfilter %}
但我有个错误:
AttributeError: 'str' object has no attribute 'get_tokens'
然后我尝试了这个:
{% filter highlight "python" %}
它也不起作用。你知道吗
可能有一个技巧通过set block filtering然后通过{{ ... }}
粘贴回来,但是这个技术还没有在主源代码中合并,对我来说似乎太黑了。你知道吗
那么,这是可能的,还是我只是做错了?你知道吗
编辑:这里是过滤器:
@jinja2.contextfilter
def highlight(context, code, lang):
print("HIGHLIGHT")
print(code)
return jinja2.Markup(pygments.highlight(code, lexer=lang, formatter='html'))
我是个白痴,那是
pygments
错误。由于某种错误,我没有看到stacktrace中的最后一个条目是从那里来的。你知道吗您应该使用:
而不是:
相关问题 更多 >
编程相关推荐