Доступ к переменной из тега шаблона, который принимает аргументы
У меня есть шаблонные теги, которые принимают ID шаблона и возвращают список, я хочу проверить список, если переменная доступна, и сделать вход checkbox отмеченным.
`_checkbox.html`
{% load get_previous_response %}
{% user_response question.id %} {# this returns a list of ids #}
So I want to do something like this
<input type="checkbox" {% if option.id in user_response %}checked{% endif %}>
problem is the above won't work, I tried django templatetag `with template context`
My main goal is I want to access the list returned by {% user_response question.id %}.
Вы можете попробовать:
{% if option.id in user_response %}
<input type="checkbox" checked>
{% else %}
<input type="checkbox">
{% endif %}
Я думаю, что есть несколько способов достичь этого.
- Из документации django о простых тегах:
Можно хранить результаты тега в переменной шаблона, а не выводить их напрямую. Для этого используется аргумент as, за которым следует имя переменной. Это позволит вам самостоятельно выводить содержимое там, где вы считаете нужным
.
В вашем случае это было бы примерно так:
{% user_response question.id as user_responses %}
Другим подходом было бы добавить список в контекст запроса, и обращаться к нему оттуда. Недостатком является то, что это будет доступно во всех ваших шаблонах (что, я думаю, не то, чего вы хотите). Смотрите этот ответ SO о том, как это сделать.
Воплотите класс Templatetag и установите контекст в методе render. Вот документация Django о том, как это сделать: https://docs.djangoproject.com/en/3.2/howto/custom-template-tags/#setting-a-variable-in-the-context
.