编程语言
首页 > 编程语言> > python – 将自定义过滤器定义嵌入到jinja2模板中?

python – 将自定义过滤器定义嵌入到jinja2模板中?

作者:互联网

我正在编写一些Jinja2模板,我希望能够在切向相关的项目中尽可能轻松地重用这些模板.我有一套自定义便利过滤器,我希望模板随身携带.是否有用于将过滤器定义嵌入模板本身的Jinja2语法?或者是一种将任何类型的纯Python函数嵌入到Jinja2模板中的机制,该模板可以作用于传递给模板的变量?我曾经使用mako,并且在那里做这件事是微不足道的,但是由于缺乏自定义语法,在mako中模板化LaTeX是痛苦的,所以我不得不进行切换.

解决方法:

没有办法可以将python直接嵌入到Jinja2模板中,我知道的方法是在应用程序中定义并将它们添加到Jinja2环境实例中.如下面的例子取自http://jinja.pocoo.org/docs/dev/api/#writing-filters.

import jinja2

loader = jinja2.FileSystemLoader('/tmp')
env = jinja2.Environment(autoescape=True, loader=loader)

def upperstring(input):
    return input.upper()

env.filters['upperstring'] = upperstring
temp = env.get_template('template.html')
temp.render(name="testing")

这是我正在使用的模板

{{ name | upperstring }}

结果就是这个

TESTING

标签:python,plugins,templates,customization,jinja2
来源: https://codeday.me/bug/20190713/1454075.html