Отображать элементы списка, используя индекс словаря в Jinja (Django)

Я использую Django Version 2.1.7, jinja2 и пытаюсь перебрать список внутри словаря, используя forloop.counter0 в шаблоне Jinja.

Мой код Views.py :

 def sample(request):
    datas= ['value1','value2','value3'] #list
    data = {'key1':'val1','key2':'val2','key3':'val3'} #dictionary
    return render(request,'index.html',{'datalist':datas,'datadic':data})

Index.html (Джинджа):

{% for dic in datadic %} 
    {{ dic }}
    {{ datalist.forloop.counter0 }} 
{% endfor %}
<!-- datalist.0 is only possible after research ,but is it constant 
for every iteration -->

Ожидаемый результат:

val1 value1
val2 value2
val3 value3
data это не словарь, это набор. И фактический порядок итерации по набору не определен.
karlosss 04.04.2019 11:25

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

Abhijith 04.04.2019 11:31

Вы уверены, что используете Jinja? forloop.counter0 выглядит как Язык шаблонов Django для цикла. Джиндзя для цикла использует loop.index0 .

Alasdair 04.04.2019 12:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
209
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В соответствии с вашим кодом «данные» - это задавать и не могут повторяться как диктовать. Но в целом итерации должны выглядеть так

{% for key, value_list in dictionary.items() %}
    {% for list_item in value_list %}
        {{ list_item }}
    {% endfor %}
{% endfor %}

спасибо за ответ, на самом деле я хочу перебрать список (который передается в списке данных) внутри словаря

Abhijith 04.04.2019 11:35
Ответ принят как подходящий

Вы должны заархивировать свои данные в представлении и повторить их один раз в шаблоне.

zipped_data = zip(data.values(), datas)
return render(request, 'index.html', {'zipped_data': zipped_data})

...

{% for d1, d2 in zipped_data %}
   {{ d1 }} {{ d2 }}
{% endfor %}

Другие вопросы по теме