Назначить значение именованного URL для переменной в шаблонах Django

В моем шаблоне Django мне нужно присвоить значение url имен переменной в блоке с блоком, чтобы я мог использовать его в нескольких местах.

Мне нужно добиться чего-то вроде этого:

{% for tag in post.tags.all %}
    {% with tagabs={%url showtag tag%} %}
          <li><a href="{{tagabs}}">#{{tag}}</a></li>
    {% endwith %}
{% endfor %}

Но очевидно, что это не сработает и закончится ошибкой синтаксического анализа. Вышеприведенный пример - простой сценарий, в котором я мог бы просто {% url showtag tag%} вместо {{tagabs}} и удалить блок с. Но в моем сценарии значение tagabs мне нужно использовать в нескольких местах и ​​внутри оператора if для сравнения.

Спасибо за помощь.

Ответ 1

Зачем создавать новый тег/фильтр шаблона, если эта функция находится в ядре?

Посмотрите образцы по адресу: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url

{% url 'path.to.view' arg arg2 as the_url %}

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a>

и

{% url 'path.to.view' as the_url %}
{% if the_url %}
  <a href="{{ the_url }}">Link to optional stuff</a>
{% endif %}

Ответ 2

Я думаю, вам придется либо создать свой собственный тег для управления этой проблемой, либо создать необходимые данные в представлении и передать его в шаблон.

В зависимости от того, что вы пытаетесь сделать, возможно, включая другой шаблон, и отправка этой переменной может сделать это, но я сомневаюсь.

Мысль за системой шаблонов Djangos заключается в том, чтобы сделать так, что в шаблонах не так много логики. И, таким образом, он возвращается к подготовке данных, которые вам нужны для вывода в представлении или создания тега шаблона.