题
我使用的是真子模板塔和我想避免打字这一切的时候:
${ h.some_function_that_outputs_html() | n }
我想以某种方式标记功能,或为安全变量(你可以做到这一点在Django),所以我不必管连接所有的时间。有任何想法吗?
解决方案
我刚刚发现,如果你把一个 HTML 方式在你的类,真子只会调用该方法,输出不管它在模板中返回。
所以,我没有:
def __html__(self):
return unicode(self)
这基本上是什么h.literal一样。
其他提示
按照鲭有关过滤的文档,可以设置默认过滤器施加内部为Template
(在这种情况下,这将被默认适用于所有的,它查找该模板)创建新TemplateLookup
时以及模板,与default_filters
参数。
塔使用此参数与TemplateLookup
设置的默认值config/environment.py
文件中项目:
# Create the Mako TemplateLookup, with the default auto-escaping
config['pylons.app_globals'].mako_lookup = TemplateLookup(
directories=paths['templates'],
error_handler=handle_mako_error,
module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
input_encoding='utf-8', default_filters=['escape'],
imports=['from webhelpers.html import escape'])
这就是为什么你会得到默认逃逸(当你使用了Mako自己是不是这样)。所以,你既可以在全球范围改变它在配置文件中,或者不依赖于标准的查找。要注意的是,你当然应该再明确地使用过滤器来逃避那些确实需要转义的东西。
您也可以通过一个字符串“标记为安全”与塔帮手h.literal
,例如,如果你会通过h.literal('This will <b>not</b> be escaped')
的模板,也就是说,作为一个变量命名spam
,你可以只使用${spam}
没有任何泄漏。
如果你想,当你从一个模板中调用某个功能相同的效果,这个功能就需要返回这样的文字,或提供该功能,如果你要离开原来的结果调用h.literal
帮手单独发挥作用。 (或者我猜你也可以通过“过滤高清”称呼它(见同上马可DOC),没有与实验还)
不隶属于 StackOverflow