1
我正在嘗試使用jinja2
模板。我有一個名爲highlight
的自定義過濾器,它需要字符串和語言名稱,並將它們傳遞到pyhments
以進行代碼高亮顯示。我想用這樣的:如何在一個包含argumets的塊上使用Jinja2過濾器
{% 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'))
您可以顯示您的自定義'highlight'篩選定義? – hjpotter92
@ hjpotter92已添加到帖子。 –
哪行顯示錯誤? – hjpotter92