Теги пользовательского фильтра 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 намеренно ограничен, чтобы помешать людям писать бизнес-логику в шаблоне.

Вернуться на верх