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

时间:2014-02-17 13:16:06

标签: django django-templates django-custom-tags

我有一个问题。我已经编写了一个带有函数签名的自定义模板标签 -

def has_paid_for_article(article, request):

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

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

前面提到的代码片段工作正常,但是我需要在条件语句中调用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 个答案:

答案 0 :(得分:2)

尝试

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

请参阅Writing custom template filters