2012-09-03 126 views
5

我有一個關於模板標籤的django問題。我有一個名爲modal_form的模板標籤,帶有4個參數。這個模板標籤的工作原理完全與像基本變量:如何在自定義模板標籤上使用模板過濾器?

{% modal_form "clients" contact_form "Contacts" "contact" %} 

但是當我試圖篩選就像我的自定義模板標籤中的變量它不工作:

{% modal_form "parameters" form_dict|key:parameter parameter name_dict|key:parameter %} 

這個自定義過濾器的工作原理也完全在標籤之外(這個過濾器在特定的鍵上得到一個字典的值)。 我有這樣的錯誤:

Caught VariableDoesNotExist while rendering: Failed lookup for key [form_dict|key:parameter]

也許我寫的標籤以不同的方式來支持內部過濾器?

這是我的標籤代碼:

def modal_form(app, object_form, object_name, object_verbose_name): 
    return { 'app': app, 'object_form': object_form, 'object_name': object_name, 'object_verbose_name': object_verbose_name } 

register.inclusion_tag('tags/modal_form.html')(modal_form) 

而且我對過濾器代碼:

def key(d, key_name): 
    try: 
     value = d[key_name] 
    except KeyError: 
     #from django.conf import settings 

     #value = settings.TEMPLATE_STRING_IF_INVALID 
     value = 0 

    return value 
key = register.filter('key', key) 

你有什麼想法?你想要更多的代碼嗎?

在此先感謝您的答案。

+1

如果您發佈的代碼,我們只能幫助;否則它只是一個猜謎遊戲。 –

+0

你也可以分享你的自定義標籤和過濾器代碼 – FallenAngel

+0

我已經編輯我的帖子的代碼,thx –

回答

7

如果你的標籤和過濾器可以單獨罰款,嘗試使用with statement

{% with var_one=form_dict|key:parameter var_two=name_dict|key:parameter %} 
    {% modal_form "parameters" var_one parameter var_two %} 
{% endwith %} 
+0

它完美的作品,謝謝 –

+0

@MaximeFavier很好,歡迎 –

+2

要添加到上面,下面允許你設置結果一個模板標籤在過濾器中使用它。 ' {%with var ='temp_tag arg1 arg2'%} {{var | filter_name:「Str」}} {%endwith%} ' – FearlessFuture

相關問題