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

der*_*lwc 5 python syntax template-engine jinja2 flask

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

对于地方发展的目的,我想一个办法来取代.NET样式的标记与某些数据的内容,这意味着Jinja2的需要能够识别%% ... %%除了标准的那些标记:{{ ... }},<% ... %>,等.

我在网上发现的一切都与在现有标签中包含一些新功能有关(例如{{ my_custom_function | arg1 arg2 }})

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

sbe*_*rry 7

据我所知,你可以使用一套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
    ``'}}'``.
Run Code Online (Sandbox Code Playgroud)

您可以使用环境变量覆盖这些.虽然,我认为没有办法让多种类型得到认可.例如,你不能拥有{{<%工作,但有一点hackery你当然可以.