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

Posted

技术标签:

【中文标题】Django模板如何对简单标签返回的结果应用过滤器【英文标题】:Django Template how to apply filter on the result returned by simple tag 【发布时间】:2020-05-02 05:18:57 【问题描述】:

我有一个以下 simple_tag。

@register.simple_tag
def Test(arg1,arg2)
   return arg1+arg2

在模板中。

 <h6>% Test val.arg1 val.arg2 %</h6>

现在我想对来自simple_tag 测试的上述returned 数据应用过滤器,

例如,我想对返回的数据应用naturaltime过滤器,如何与简单标签一起进行。

<h6>% Test val.arg1 val.arg2 | naturaltime %</h6>

【问题讨论】:

% Test val.arg1 val.arg2 as result % result|naturaltime 呢? 【参考方案1】:

对于简单标签,您可以将模板标签的结果存储在带有as 关键字的变量中,如documentation on simple tags 中所指定:

可以将标记结果存储在模板变量中 而不是直接输出。这是通过使用as 完成的 参数后跟变量名。这样做可以让您输出 自己认为合适的内容:

% current_time "%Y-%m-%d %I:%M %p" as the_time %
<p>The time is  the_time .</p>

所以在这种情况下,我们可以使用以下方式渲染输出:

&lt;h6&gt;% Test val.arg1 val.arg2 <b>as result</b> % <b>result</b>|naturaltime &lt;/h6&gt;

【讨论】:

以上是关于Django模板如何对简单标签返回的结果应用过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何将标签的结果传递给 Django 中的过滤器?

Django基础之视图(views)层模板层

Django框架4

django 编写我的第一个自定义模板标签和过滤器

18)django-模板的过滤器和tag,自定义simple_tag和filter

django自定义过滤器及模板标签