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
Jinja2: im Template rechnen
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das sollte per Filter gehen:
http://jinja.pocoo.org/2/documentation/ ... in-filters
http://jinja.pocoo.org/2/documentation/ ... in-filters
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
Stefan
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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 Sinnsma 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
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
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:
PS: Ich habe versucht, den Code ein wenig so zu gestalten, damit ueberhaupt irgendein Highlighning was bringt. Ein Template-Highlighter waer schon toll
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 }}€
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2