2013-10-29 63 views
2

使用Django的內置yesno過濾器,我需要插入這些值之一:Django模板內置過濾器:在辯論中使用的變量值

  1. 單詞「I」
  2. 值可變owner_name

這裏是我試過在我的模板的代碼:

"Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!" 

使用上面的代碼將導致以下錯誤:

Could not parse the remainder: ':"I,{{ owner_name' from 'is_owner|yesno:"I,{{ owner_name'

那麼,如何逃脫的過濾器的參數內的變量?

回答

4

你可以做的另一件事是使用with模板標籤和過濾器add串連的論點:

{% with yesno_args="I,"|add:owner_name %} 
"Look what {{ is_owner|yesno:yesno_args }} created!" 
{% endwith %} 

我覺得這是不必添加自定義過濾器簡單。

1

你可以創建一個custom filter來做你想做的。

它看起來像{{ is_owner|my_yesno:owner_name }}

使用自定義過濾器

from django.template.defaultfilters import yesno 

def my_yesno(value, arg): 
    yes_no_list = ['I', arg] 
    return yesno(value, yes_no_list) 

這將讓你重用YESNO同時創造你的包裝my_yesno列表。如果你想要做不同的事情,你也可以寫自己的邏輯。一定要{% load %}您的自定義過濾器以及。

相關問題