Переменная в переменной в шаблоне Django - PullRequest
1 голос
/ 11 декабря 2019

У меня есть глобальная переменная, доступная из каждого файла HTML. Переменная называется canAccessClients. Это список объектов (клиентов), к которым имеет доступ зарегистрированный пользователь. Он в основном используется в меню, поэтому пользователь может видеть только своих клиентов. Я могу найти логотип клиента (его URL) по canAccessClients.<some_index>.picture.url.

Теперь у меня есть одна страница, где находятся только некоторые клиенты.

Я знаю идентификатор этих клиентов.

Этот идентификатор клиента явно не совпадает с индексом в списке canAccessClients.

Поскольку canAccessClients - это только список объектов клиента.

Теперь мне нужно показать логотипдля того же клиента, которому я знаю его идентификатор.

Я делаю это (возможно, с плохой идеей, но работает), находя итерацию по canAccessClients и ища нужный идентификатор.

{% for client in canAccessClients %}
   {% if client.id == client_data.CLIENT_ID %}
      <img class="client-menu-logo" src="{{ canAccessClients.{{ forloop.counter }}.picture.url }}" alt="logo">
   {% endif %}
{% endfor %}

Все работает и все в порядке, но ... мне нужно передать forloop.counter переменную в canAccessClients.<some_id>.picture.url, это не работает.

Как я могу использовать переменную в некоторой другой переменной в пути, как это?

1 Ответ

0 голосов
/ 11 декабря 2019

Вы можете написать свой собственный шаблонный тег для достижения этой цели. Пример:

@register.simple_tag
def get_image_url_by_id(id):
    url = Client.objects.get(pk=id).image_url # get image url from database
    return url

и в шаблоне:

{% with get_image_url_by_id forloop.counter as image_url %}
{{ image_url }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...