Django将多个参数传递给If语句中的自定义模板过滤器

Posted

技术标签:

【中文标题】Django将多个参数传递给If语句中的自定义模板过滤器【英文标题】:Django Pass Multiple Parameters to Custom Template Filter Inside If Statement 【发布时间】:2014-03-16 19:26:04 【问题描述】:

我有一个问题。我写了一个自定义模板标签,带有这样的函数签名-

def has_paid_for_article(article, request):

现在,在我的模板标签中,我有一个条件语句来确定用户是否可以下载一篇文章(这取决于文章是否超过两年或登录用户已为文章付费)。这是sn-p-

% if article|is_older_than_two_years %
<span class="amp">&amp; </span>% get_article_download_link article  %
% else %
download
% endif %

前面提到的 sn-p 工作正常,但是我需要在条件语句中调用 has_paid_for_article() 函数。我尝试了以下方法来实现这一点-

 % if article|is_older_than_two_years or article|request|has_paid_for_article %

,

 % if article|is_older_than_two_years or [article, request]|has_paid_for_article %

这个在条件语句之外工作-

% if article|is_older_than_two_years or has_paid_for_article article request % 

这里的正确语法是什么?另外,我已经阅读了有关该主题的其他帖子,我不能将此逻辑放在视图中。我不会详细介绍,但就其工作方式而言,这不是一个选择。谢谢!

【问题讨论】:

【参考方案1】:

试试

% if article|is_older_than_two_years or article|has_paid_for_article:request %

见Writing custom template filters

【讨论】:

做到了。语法让我失望。谢谢!

以上是关于Django将多个参数传递给If语句中的自定义模板过滤器的主要内容,如果未能解决你的问题,请参考以下文章

django 将参数传递给模板标签中的函数

将命名参数传递给 Django 模板中的函数

如何将参数传递给Django中模板变量的方法?

如何将参数传递给 JHipster 中的自定义错误消息?

将额外参数传递给 sklearn 管道中的自定义评分函数

是否可以将查询参数传递给 Django % url % 模板标签?