【问题标题】:How to use a template filter on a custom template tag?如何在自定义模板标签上使用模板过滤器?
【发布时间】:2012-08-28 02:25:42
【问题描述】:

我有一个关于模板标签的 django 问题。我有一个名为 modal_form 的模板标签,带有 4 个参数。此模板标签与基本变量完美配合,例如:

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

但是当我尝试在我的自定义模板标签中过滤变量时它不起作用:

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

这个自定义过滤器在标签之外也能完美工作(这个过滤器在特定键处获取字典的值)。 我有这个错误:

渲染时捕获 VariableDoesNotExist:查找键失败 [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)

你有什么想法吗?你想要更多代码吗?

提前感谢您的回答。

【问题讨论】:

  • 我们只能在您发布代码时提供帮助;否则它只是一个猜谜游戏。
  • 你能不能也分享你的自定义标签和过滤代码
  • 我已经用代码编辑了我的帖子,谢谢

标签: django templates filter tags


【解决方案1】:

如果您的标签和过滤器单独工作正常,请尝试使用with statement

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

【讨论】:

  • 要添加到上面,下面允许您设置模板标签的结果,在过滤器中使用它。 ` {% with var='temp_tag arg1 arg2' %} {{var|filter_name: "Str"}} {% endwith %} `
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多