wake-up-neo.com

wie man diesen Code in der Django-Vorlage ausführt 

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

44
zjm1126

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. 

63
Joe Holloway

sie können {{ forloop.counter }} oder {{ forloop.counter0 }} für denselben Effekt verwenden, der letztere ist 0-indiziert, also eher enumerate.

12
Uku Loskit

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.

5
vabhdman
{% for item in a %}
    {{ forloop.counter }}, {{ item }}
{% endfor %}

Link verbunden

2
razpeitia

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/

0
gladysbixly