Как запустить этот код в шаблоне django

это мой код:

{% for i,j in enumerate(a) %}
    {{i}} ,{{j}}
{% endfor%}

но, он показывает ошибку, я думаю, что он не может запустить метод enumerate,

так как запустить enumerate в шаблоне django,

спасибо

Ответ 1

Подсистема шаблона имеет некоторые специальные конструкции, встроенные в блок for/endfor, который позволяет вам получить доступ к текущему индексу цикла без вызова enumerate.

{% for j in a %}
    {{ forloop.counter0 }}, {{ j }}
{% endfor %}

В то время как этот фрагмент решает вашу непосредственную проблему, если вы ожидаете получить доступ к встроенным Python и другим конструкторам Python внутри ваших шаблонов Django, вы можете не понимать, какую именно песочницу она предоставляет/обеспечивает.

Ответ 2

вы можете использовать {{ forloop.counter }} или {{ forloop.counter0 }} для одного и того же эффекта, последний индексируется 0, что больше похоже на enumerate.

Ответ 3

Шаблон Django составляет слой презентации и не предназначен для логики. Из docs

Если у вас есть опыт программирования, или если вы используете языки, которые смешивают программный код непосредственно в HTML, вы хотите иметь в виду, что система шаблонов Django - это не просто Python, встроенная в HTML. Это по дизайну: система шаблонов предназначена для выражения презентации, а не для логики программы.

Теперь, чтобы получить такую ​​же функциональность в Django, вам придется завершить свою логику в просмотрах.

views.py

def my_view(request, ...):
    ....
    enumerated_a = enumerate(a);
    ....
    return render_to_response('my_template.html', {'enumerated_a ': enumerated_a }..)

Теперь функция enumerate возвращает объект перечисления, который является итерируемым.
my_template.html

{% for index, item in enumerated_a %}
    {{ index }},{{ item }}
{% endfor %}

Хотя я думаю, что вы, вероятно, можете изменить его на список и использовать его так же.