DJango模板 - 自定义模板标签传递2个变量

时间:2014-02-07 03:33:59

标签: django templates django-templates

我需要做这样的事情:

{% for team in association|get_teams_by_category_gender:category,gender %}

但是django不允许2个参数......我怎么能这样做?

基本上,我需要过滤器来返回一个对象列表,这样我就可以遍历它,我会按类别和性别过滤团队。

谢谢, ARA

1 个答案:

答案 0 :(得分:1)

在这里,

这是可能而且相当简单。

Django只允许你的过滤器使用一个参数,但没有理由你不能使用逗号将所有参数放入单个字符串中来分隔它们。

因此,例如,如果您想要一个过滤器来检查变量X是否在列表[1,2,3,4]中,您将需要一个如下所示的模板过滤器:

{%if X | is_in:“1,2,3,4”%} 现在我们可以像这样创建你的模板标签:

from django.template import Library

register = Library()

def is_in(var, args):
    if args is None:
        return False
    arg_list = [arg.strip() for arg in args.split(',')]
    return var in arg_list

register.filter(is_in)

How do I add multiple arguments to my custom template filter in a django template?