2012-09-03 91 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

相关问题