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