2014-02-07 93 views
0

我需要做這樣的事情:Django的模板 - 自定義模板標籤通過2個變量

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

但Django的犯規讓2個參數...我怎麼能這樣做?

基本上,我需要過濾器來返回一個對象列表,所以我可以通過它循環,我會按類別和性別過濾團隊。

感謝, 阿糖胞苷

回答

1

這裏,

這是可能的,相當簡單。

Django只允許您的過濾器有一個參數,但沒有理由不能使用逗號將所有參數放入單個字符串中以分隔它們。

因此,舉例來說,如果你想有一個過濾器來檢查,如果變量X是列表[1,2,3,4]你會希望有一個模板過濾器,看起來像這樣:

{%如果X | IS_IN: 「1,2,3,4」 %} 現在,我們可以創建你templatetag這樣的:

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?

+0

你好,感謝您的回覆。做「類別,性別」的問題將採取字符串類別。但我希望它採取的對象類別... –

+0

@AraSivaneswaran Django只允許一個參數到您的過濾器,所以你需要發送性別值和類別值作爲一個字符串,這個字符串處理你的templatetag方法使用'split ( '')'。 – dhana

+0

並編寫自己的邏輯。 – dhana

相關問題