![](/img/trans.png)
[英]Python / Django / Jinja2: How to extend a variable name with the value of another variable (e.g. in a for-loop)?
[英]Add custom tokens in Jinja2 (e.g. %% somevar %%)
我正在制作 Flask 应用程序,用于 HTML 模板的本地开发(在 Mac 上),最终将通过 ASP.NET 提供服务。
出于本地开发的目的,我想要一种方法用一些数据替换 .NET 样式标记的内容,这意味着 Jinja2 除了标准标记之外,还需要能够识别%%... %%
标记: {{... }}
, <%... %>
等。
我在网上找到的所有内容都与在现有标签中包含一些新功能有关(例如{{ my_custom_function | arg1 arg2 }}
)
但是,如何为标签完全定义一个新模式呢? 有没有人成功做到这一点? 是否需要对 Jinja2 内核进行修改?
据我所知,你可以使用一组用于block_start_string
和block_end_string
,以及一组用于variable_start_string
和variable_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.