Как использовать шаблонный фильтр для пользовательского тега шаблона?
У меня проблема с 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 %}