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