Отображать элементы списка, используя индекс словаря в Jinja (Джанго) - PullRequest
1 голос
/ 04 апреля 2019

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

MyCode 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 (Jinja):

{% 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

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

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

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

...

{% for d1, d2 in zipped_data %}
   {{ d1 }} {{ d2 }}
{% endfor %}
1 голос
/ 04 апреля 2019

Согласно вашему коду «data» имеет значение set и не может быть повторено как dict .Но в целом итерации должны выглядеть следующим образом

{% for key, value_list in dictionary.items() %}
    {% for list_item in value_list %}
        {{ list_item }}
    {% endfor %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...