繁体   English   中英

在 Jinja2 中添加自定义令牌(例如 %% somevar %%)

[英]Add custom tokens in Jinja2 (e.g. %% somevar %%)

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

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

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

但是,如何为标签完全定义一个新模式呢? 有没有人成功做到这一点? 是否需要对 Jinja2 内核进行修改?

据我所知,你可以使用一组用于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
    ``'}}'``.

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

除了正确答案之外,还可能是更改变量标记的示例实现:

将以下 header 添加到 jinja2 模板文件的第一行。

#jinja2:  variable_start_string: "#{" , variable_end_string: "}#"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM