在Jinja2中添加自定义标记(例如%% somevar %%)

时间:2012-08-23 00:45:57

标签: python flask syntax jinja2 template-engine

我正在制作一个Flask应用程序,用于HTML模板的本地开发(在Mac上),最终将通过ASP.NET提供。

出于本地开发的目的,我想要一种方法用一些数据替换.NET风格的标记的内容,这意味着除了标准的标记之外,Jinja2还需要能够识别%% ... %%标记。 :{{ ... }}<% ... %>

我在网上找到的所有内容都与现有标记中包含一些新功能有关(例如{{ my_custom_function | arg1 arg2 }}

但是如何完全定义标签的新模式呢?有人做过这个吗?它是否需要修改Jinja2核心?

1 个答案:

答案 0 :(得分:6)

据我所知,您可以为block_start_stringblock_end_string使用一套,为variable_start_stringvariable_end_string使用一套。

来自jinja2 / environment.py

`block_start_string`
    The string marking the begin of a block.  Defaults to ``'{%'``.

`block_end_string`
    The string marking the end of a block.  Defaults to ``'%}'``.

`variable_start_string`
    The string marking the begin of a print statement.
    Defaults to ``'{{'``.

`variable_end_string`
    The string marking the end of a print statement.  Defaults to
    ``'}}'``.

您可以使用环境变量覆盖这些。虽然,我认为没有办法让多种类型得到认可。例如,你不能让{{<%都可以工作,但是当然你可以做一些小问题。