Python 有条件地应用jinja2过滤器
我想有条件地对文本的某一部分应用过滤器。例如:Python 有条件地应用jinja2过滤器,python,jinja2,templating,Python,Jinja2,Templating,我想有条件地对文本的某一部分应用过滤器。例如: {% filter upper %} some text {% endfilter %} 对以下内容的更改: {% filter upper if X == 1 %} some text {% endfilter %} 也许这是不可能的,解决方案是if/else语句。然后,“some text”将重复两次,一次用于“if”,一次用于“else”。在一个小例子中,这很好。但是如果文本很长并且包含变量怎么办?因此,下一个选择是将“一
{% filter upper %}
some text
{% endfilter %}
对以下内容的更改:
{% filter upper if X == 1 %}
some text
{% endfilter %}
也许这是不可能的,解决方案是if/else语句。然后,“some text”将重复两次,一次用于“if”,一次用于“else”。在一个小例子中,这很好。但是如果文本很长并且包含变量怎么办?因此,下一个选择是将“一些文本”移动到宏中。同样,如果文本包含许多变量,则必须设置宏的所有参数,这会变得更加复杂。也许这些是唯一的选择。有没有一种方法可以简洁地组合条件和筛选器?您可以将筛选器中的逻辑与自定义逻辑一起移动: 过滤器定义:
def custom_upper(text, X):
if X == 1:
return text.upper()
return text
environment.filters['custom_upper'] = custom_upper
{% filter custom_upper(X) %}
some text
{% endfilter %}
模板:
def custom_upper(text, X):
if X == 1:
return text.upper()
return text
environment.filters['custom_upper'] = custom_upper
{% filter custom_upper(X) %}
some text
{% endfilter %}
太棒了!非常感谢。