如何有条件地在 Django 中应用模板过滤器?

Posted

技术标签:

【中文标题】如何有条件地在 Django 中应用模板过滤器?【英文标题】:How to conditionally apply a template filter in Django? 【发布时间】:2021-11-26 02:32:20 【问题描述】:

假设我有一个 Django 模板

<div><b>some.long.expression.with.stuff|filter1</b></div>

如果my_condition 为真,我只想申请filter1

最好的方法是什么?这是一种带有重复的冗长方式:

% if my_condition %
<div><b>some.long.expression.with.stuff|filter1</b></div>
% else %
<div><b>some.long.expression.with.stuff</b></div>
% endif %

这里稍微不那么冗长,更难阅读,仍然有一些重复:

<div><b>% if my_condition %some.long.expression.with.stuff|filter1% else %some.long.expression.with.stuff% endif %</b></div>

建议?

【问题讨论】:

【参考方案1】:

您可以使用% with … % … % endwith % template tag:

% with somevar=some.long.expression.with.stuff %
<div><b>% if my_condition % somevar|filter1 % else % somevar % endif %</b></div>
% endwith %

【讨论】:

以上是关于如何有条件地在 Django 中应用模板过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取相关项目的列表并在 Django 中应用模板过滤器

Django模板如何对简单标签返回的结果应用过滤器

在 if 条件内调用块:django 模板

如何在 django 模板中从 for 循环中转义一行

python Django教程 之模板渲染循环条件判断常用的标签过滤器

根据模板客户端有条件地在模板中排除 CSS 资源文件