Пользовательский тег шаблона не присваивается контексту {% с %}
Мне нужен пользовательский тег, в который можно передавать несколько аргументов с ключевыми словами для создания уникального идентификатора для данного экземпляра объекта. Независимо от того, какую строку возвращает тег, он присваивает ее в качестве контекстной переменной включенному шаблону. При этом контекстная переменная id остается пустой. В этом случае идентификаторы для элементов SVG возвращают только жестко закодированные строки upvote_ и downvote_.
Как исправить ситуацию, чтобы контекстная переменная id интерполировалась в строку атрибутов SVG id?
- Примером может быть:
upvote_queston101
{% for answer in question.answers.all %}
{% include "./posted.html" with post=answer id=set_id question=question.id answer=answer.id %}
{% endfor %}
<div class="rating_box">
<div class="vote">
<svg id="upvote_{{ id }}" class="vote_button">
</svg>
<p>{{ post.score }}</p>
<svg id="downvote_{{ id }}" class="vote_button">
</svg>
</div>
<p class="post_body_content">{{ post.body }}</p>
</div>
from django import template
register = template.Library()
@register.simple_tag
def set_id(*args, **kwargs):
if kwargs['question'] and kwargs['answer']:
q_id, a_id = kwargs['question'], kwargs['answer']
return f"question{q_id}_answer{a_id}"
q_id = kwargs['question']
return f"question{q_id}"
Попробуйте сделать его более пошаговым и назначить временную переменную для идентификаторов. Предположим, что существует некоторый конфликт с использованием знаков "=" в строке
{% for answer in question.answers.all %}
{% set_id question=question.id answer=answer.id as ids %}
{% include "./posted.html" with post=answer id=ids %}
{% endfor %}