Как использовать шаблонный фильтр для пользовательского тега шаблона?

У меня проблема с django относительно тегов шаблонов. У меня есть тег шаблона с именем modal_form с 4 аргументами. Этот тег шаблона отлично работает с такими базовыми переменными, как:

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

Но это не работает, когда я пытаюсь отфильтровать переменную внутри моего пользовательского тега шаблона, например:

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

Этот пользовательский фильтр также отлично работает вне тега (этот фильтр получает значение dict для определенного ключа). У меня есть эта ошибка:

Перехватил VariableDoesNotExist при рендеринге: не удалось найти ключ [form_dict| ключ: параметр]

Может быть, я должен написать тег по-другому, чтобы поддержать фильтр внутри?

Это мой код для тега:

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 ответ

Решение

Если ваш тег и фильтр отлично работают отдельно, попробуйте использовать с оператором:

{% with var_one=form_dict|key:parameter var_two=name_dict|key:parameter %}
    {% modal_form "parameters" var_one parameter var_two %}
{% endwith %}
Другие вопросы по тегам