Тег внутри тега Django шаблон - PullRequest
0 голосов
/ 09 июля 2020

Прежде всего, позвольте мне показать наш файл views.py.

context = {
        'id' : id,
        'durum' : durum,
        'range': range(len(id)),
}

У меня есть такие данные в шаблоне;

context.id = [12, 10, 10] 
context.durum = ['UPL','PPL','FIUPL']

Я хочу сопоставить эти данные вот так;

12 UPL
10 PPL
10 FIUPL

Я создал для l oop для этого, но нужно отредактировать

{% for i in context.range %}
    {{ context.id }}
    {{ context.durum }}
{% endfor %}

Вот так;

{% for i in context.range %}
    {{ context.id.i }}
    {{ context.durum.i }}
{% endfor %}

Но я не могу используйте переменную i в l oop.

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Используйте zip в поле зрения

Пример:

context = {
        'data' : zip(id, durum)
}

А затем в шаблоне

Используйте:

{% for id, durum in data %}
    {{ id }}
    {{ durum }}
{% endfor %}
0 голосов
/ 09 июля 2020

Ну, похоже, вы перешли на python с другого языка. Обычно вы не используете индексацию в python для циклов (они намного проще и интуитивно понятнее), поэтому вам было трудно «спаривать» эти значения. Если вы все еще можете провести рефакторинг своего кода, вместо внесения в список с атрибутами в соответствующих индексах используйте dict. Один - это позволит вам очень легко распаковать в django шаблоне

{% for id, durum in my_dict %}
{{ id }} {{ durum }}
{% endfor %}

Два - он предотвратит любые ошибки, связанные с неправильным индексом, потому что вы просто вызываете id, и он получит правильный durum . В-третьих, обновить такой набор данных будет очень легко.

my_dict.update({new_id: new_durum})

Пожалуйста, подумайте о том, чтобы потратить немного времени на изучение нового материала, потому что это сделает ваш python опыт намного более приятным. Да и кстати - в большинстве случаев вам не нужно указывать вызов {{ context.something }} - его достаточно, чтобы позвонить {{ something }}

0 голосов
/ 09 июля 2020

Вы можете использовать понимание списка.

Так, например:

my_list = list(zip(context['id'], context['durum'], context['range']))

А затем в шаблоне вы можете использовать:

{% for item in my_list %}
    {{ item.0 }} -- { item.1 }}
{% endfor %}
...