это мой код:
{% for i,j in enumerate(a) %}
{{i}} ,{{j}}
{% endfor%}
но, он показывает ошибку, я думаю, что он не может запустить метод enumerate
,
так как запустить enumerate
в шаблоне django,
спасибо
это мой код:
{% for i,j in enumerate(a) %}
{{i}} ,{{j}}
{% endfor%}
но, он показывает ошибку, я думаю, что он не может запустить метод enumerate
,
так как запустить enumerate
в шаблоне django,
спасибо
Подсистема шаблона имеет некоторые специальные конструкции, встроенные в блок for/endfor, который позволяет вам получить доступ к текущему индексу цикла без вызова enumerate
.
{% for j in a %}
{{ forloop.counter0 }}, {{ j }}
{% endfor %}
В то время как этот фрагмент решает вашу непосредственную проблему, если вы ожидаете получить доступ к встроенным Python и другим конструкторам Python внутри ваших шаблонов Django, вы можете не понимать, какую именно песочницу она предоставляет/обеспечивает.
вы можете использовать {{ forloop.counter }}
или {{ forloop.counter0 }}
для одного и того же эффекта, последний индексируется 0, что больше похоже на enumerate
.
Шаблон 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 %}
Хотя я думаю, что вы, вероятно, можете изменить его на список и использовать его так же.
{% for item in a %}
{{ forloop.counter }}, {{ item }}
{% endfor %}
Если вам нужно использовать функцию внутри шаблона, я предлагаю вам вместо этого создать фильтр или тег. Для справки: http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/