Jinja2: im Template rechnen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Jinja2: im Template rechnen

Beitragvon nkoehring » Samstag 6. Dezember 2008, 02:32

Hallo...

nach einiger Zeit melde ich mich mal wieder und habe natuerlich auch gleich eine Frage parat.

Ich bastele gerade mit Glashammer rum. Die Wahl viel darauf, weil es ein WebFramework ist, das auf Jinja2 und Werkzeug aufsetzt und ich mich vorallem mit Jinja2 schon auseinandergesetzt habe.

Nun zur eigentlichen Frage: Kann ich mit Jinja2 im Template rechnen? Das heißt, ich uebergebe eine Liste aus Objekten, von denen ich im Template eine Auswahl treffe. Diese Auswahl moechte ich dann zB aufsummieren und das Ergebnis dann ausgeben.

Geht das?

Beste Gruesse
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Samstag 6. Dezember 2008, 08:52

ich glaube, du kannst nur sowas wie liste|sum machen...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Samstag 6. Dezember 2008, 13:31

sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Samstag 6. Dezember 2008, 14:42

Auswählen und Aufsummieren klingt aber eigentlich nach Dingen, die nicht ins Template gehören, sondern Teil der Anwendungslogik sind und im "Controller" stattfinden sollten oder wie der Teil in einer MVC-artigen Architektur auch immer genannt sein mag.

Stefan
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Samstag 6. Dezember 2008, 16:37

sma hat geschrieben:Auswählen und Aufsummieren klingt aber eigentlich nach Dingen, die nicht ins Template gehören, sondern Teil der Anwendungslogik sind und im "Controller" stattfinden sollten oder wie der Teil in einer MVC-artigen Architektur auch immer genannt sein mag.

Stefan

Ist natürlich auch viel Geschmackssache, aber ich würde auch so wenig Logik wie nötig ins Template packen und den Rest vorher in Python erledigen. Ansonsten verliert das Template ja irgend wie seinen inneren Sinn ;-)
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Samstag 6. Dezember 2008, 16:39

Also die Auswahl laeuft im Controller ab und wird dann dem Template zugesendet. Aber das Aufsummieren ist in diesem Falle nur ein zusaetzliches Template-Spezifisches Extra. Deshalb wollte (und habe) ich es auch dorthin ausgelagert.

Da man scheinbar nicht problemlos sowas wie {% set foo = foo + bar %} machen kann, habe ich die Variante mit der Liste gewaehlt.

Hier ein kleines Beispiel fuer sowas wie einen Warenkorb:

Code: Alles auswählen

<% set foo = [] %>
<% for item in cart %>
    {{ item.name }} - {{ item.prize }}€<br />
    <# hier muss man ein bisschen tricksen, damit Jinja nicht "None" ausschreibt. #>
    {{ (foo.append(item.prize)) or "" }}
<% endfor %>
gesamt: {{ foo|sum }}€


PS: Ich habe versucht, den Code ein wenig so zu gestalten, damit ueberhaupt irgendein Highlighning was bringt. Ein Template-Highlighter waer schon toll :roll:

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]