Теги пользовательского фильтра Django и запрос доступа
Здравствуйте нужна помощь по Django пользовательскому тегу фильтра, очень признателен!
Я зарегистрировал тег filter для доступа к словарю в HTML файлах, как показано ниже:
DIRECTORY - blog>templatetags>post_extras.py
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
Словарь с именем dict_post, ключом является id поста, а значениями - набор запросов. Допустим, чтобы получить ключ словаря 1:
DIRECTORY - blog>templates>blog>home.html
{{ dict_post|get_item:1 }}
Возвращает 'title' и 'date_posted' в наборе запросов
Post('dsdsdsdqqq111', '2021-10-03 10:24:40.623754+00:00')
Это хорошо работает для тега filter, но когда я хочу получить доступ к некоторому запросу после тегов filter, он возвращает ошибки. Как получить только заголовок? Я пробовал код, как показано ниже, но он возвращает ошибки
DIRECTORY - blog>templates>blog>home.html
{{ dict_post|get_item:1.title }}
Ошибка:
VariableDoesNotExist at /
Ищу помощи, спасибо!
Вы можете использовать тег шаблона {% with … %} … {% endwith %}
[Django-doc]:
{% with somevar=dict_post|get_item:1 %}
{{ somevar.title }}
{% endwith %}
поскольку мы здесь знаем, что ключ 1
(вероятно, позже это изменится), мы можем работать с:
{# if the key is known to be 1 #}
{{ dict_post.1.title }}
При этом обычно лучше "подготовить" данные в представлении таким образом, чтобы не нужно было выполнять поиск по словарю с переменным ключом. Язык шаблонов Django намеренно ограничен, чтобы помешать людям писать бизнес-логику в шаблоне.