das ist mein Code:
{% for i,j in enumerate(a) %}
{{i}} ,{{j}}
{% endfor%}
aber es zeigt einen Fehler, ich denke, es kann nicht die enumerate
-Methode laufen.
so führen Sie die enumerate
in Django-Vorlage aus,
vielen Dank
Das Vorlagensubsystem verfügt über einige spezielle Konstrukte, die in den for/endfor-Block integriert sind, sodass Sie auf den aktuellen Index der Schleife zugreifen können, ohne enumerate
aufrufen zu müssen.
{% for j in a %}
{{ forloop.counter0 }}, {{ j }}
{% endfor %}
Während dieses Snippet Ihr unmittelbares Problem löst, wenn Sie erwarten, dass Sie Zugriff auf Python-Buildins und andere Python-Konstrukte in Ihren Django-Vorlagen haben, können Sie die von ihm bereitgestellte Sandbox missverstehen.
sie können {{ forloop.counter }}
oder {{ forloop.counter0 }}
für denselben Effekt verwenden, der letztere ist 0-indiziert, also eher enumerate
.
Django-Vorlage bildet die Präsentationsschicht und ist nicht für Logik gedacht. Aus den Dokumenten
Wenn Sie über Hintergrundwissen in der Programmierung verfügen oder an Sprachen gewöhnt sind, die Programmcode direkt in HTML-Code mischen, möchten Sie daran denken, dass das Django-Schablonensystem nicht einfach in HTML eingebettetes Python ist. Dies ist beabsichtigt: Das Vorlagensystem soll die Darstellung ausdrücken, nicht die Programmlogik.
Um nun dieselbe Funktionalität in Django zu erhalten, müssen Sie Ihre Logik in den Ansichten vervollständigen.
views.py
def my_view(request, ...):
....
enumerated_a = enumerate(a);
....
return render_to_response('my_template.html', {'enumerated_a ': enumerated_a }..)
Die enumerate
-Funktion gibt nun ein Aufzählungsobjekt zurück, das iterierbar ist.
meine_vorlage.html
{% for index, item in enumerated_a %}
{{ index }},{{ item }}
{% endfor %}
Ich denke, Sie können es wahrscheinlich in eine Aufzählungsliste ändern und auch so verwenden.
{% for item in a %}
{{ forloop.counter }}, {{ item }}
{% endfor %}
Wenn Sie jedoch eine Funktion in einer Vorlage verwenden müssen, sollten Sie stattdessen einen Filter oder ein Tag erstellen. Weitere Informationen finden Sie unter http://docs.djangoproject.com/de/1.2/howto/custom-template-tags/