如何创建jinja2过滤器并在挂架中使用它?

时间:2010-07-30 03:50:17

标签: pylons jinja2

我试图找到一种方法来实现一个简单的过滤器。

我想创建相当于一些Smarty“标签”,以便更轻松地移植 {mail_to} http://www.smarty.net/manual/en/language.function.mailto.php

我似乎在jinga2文档之间绕圈子 http://jinja.pocoo.org/2/documentation/extensions#module-jinja2.ext

和webhelpers http://pylonshq.com/docs/en/0.9.7/modules/templating/

我期待写的是

{% mail_to user=c.user.email encode='hex' %}

无法弄清楚如何将它们拼凑在一起,即lib的位置以及如何加载使用。

TIA

1 个答案:

答案 0 :(得分:1)

写下您的扩展并将其放入lib / extensions.py

要在config / environment.py中将扩展加载到环境中,请执行以下操作:

from MYAPP.lib import extensions

config['pylons.app_globals'].jinja2_env = Environment(loader=ChoiceLoader(
            [FileSystemLoader(path) for path in paths['templates']]),
             extensions=[extensions.YOU_EXTENSION_MAIL_TO_CLASS]))

# If you extension use some options, you can init it 
config['pylons.app_globals'].jinja2_env.mail_to_smtp_host = 'some_host'

在你的模板之后,只需调用{%mail_to arg1,arg2%}