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">& </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语句中的自定义模板过滤器的主要内容,如果未能解决你的问题,请参考以下文章