Как получить доступ к элементам списка в шаблоне django jinja динамически, используя индексирование переменных
Ошибка шаблона Django jinja - TemplateSyntaxError
Я пытался создать пример страницы show users, где я хочу показать имя пользователя, пароль и роль пользователей. Я буду хранить роли в виде чисел и позже попытаюсь получить имя роли из списка.
Я жестко закодировал имена этих ролей в список roles = ['admin', 'teacher', 'student']
эти роли были переданы html-странице как значение контекста. Также я передаю переменную num для доступа к элементам списка (в настоящее время ее значение также жестко закодировано, я буду менять это в будущем)
views.py
def index(request):
roles = ['admin', 'teacher', 'student']
num=1
return render(request=request, template_name='show_all.html', context={'roles': roles, 'num': num})
и внутри моей html-страницы я пытаюсь получить доступ к этому списку, используя переменную num
, как указано ниже
show_all.html
{{roles[num]}}
но выдает ошибку
TemplateSyntaxError at /show_all
>
Не удалось разобрать остаток: '[num]' из 'roles[num]'
есть несколько решений, которые говорят roles.0
даст вам первый результат и roles.1
даст следующий, Но я не хочу жестко кодировать индекс там.
requirements.txt
asgiref==3.5.2
Django==4.1.3
sqlparse==0.4.3
tzdata==2022.6
Я пытался
{{roles.num}}
{{roles.get(num)}}
{{roles[num]}}
ничто не дает мне желаемого результата.
Обходным решением может быть следующее:
def index(request):
roles = ['admin', 'teacher', 'student']
num=1
return render(request=request, template_name='show_all.html', context={'roles': roles, 'num': num, 'rolesi': roles[num]})
И затем: show_all.html
{{rolesi}}