我使用的是真子模板塔和我想避免打字这一切的时候:

${ 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),没有与实验还)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top