Seite 1 von 2

Verfasst: Donnerstag 30. Juli 2009, 08:25
von jens
Ich halte das nicht für eine schlechte Idee. Denn normalerweise ist include ehr für einmaliges einbinden da.

Mit einer "recurse" Funktion braucht man das Template nicht mehr aufzuteilen. Wäre auch wahrscheinlich schneller.

Im Netz gibt es auch Beispiele. Aber richtig Funktioniert haben die bei mir nicht. So bleib ich lieber bei der include Lösung.

Verfasst: Donnerstag 30. Juli 2009, 08:34
von Defnull
Die "recurse" Funktion ist redundant (also überflüssig), da man exakt das gleiche Verhalten mit "include template_name" erreichen kann. Warum "include" nur für einmaliges Einfügen da sein soll, kann ich nicht nach vollziehen. Besonders nicht im Template-Zusammenhang, wo es doch eher um Textbausteine und weniger um Bibliotheken geht.

Aber im Endeffekt ist und bleibt sowas Geschmackssache. Nicht umsonst gibt es eine so große Auswahl an Template Engines :) Ich find meine eigene eh am besten ;)

Verfasst: Donnerstag 30. Juli 2009, 09:09
von jens
Wie ich schon geschrieben hab, include arbeitet halt anders, man muß dazu zwei template dateien anlegen. Mit einer "recurse" Funktion kann man alles in einem Template machen, somit ist es schon was anderes.

Aber egal. Die Django Jungs mögen das wohl nicht oder brauchen es nicht.

Verfasst: Donnerstag 30. Juli 2009, 11:01
von Defnull
Geht anscheinend auch mit einer Datei.
http://blog.elsdoerfer.name/2008/01/22/ ... templates/

Verfasst: Donnerstag 30. Juli 2009, 11:11
von lunar
Wie hast du das denn da raus gelesen?! Er schreibt nur, dass man den Dateinamen der zweiten Daten als Variable übergeben kann, um die Evaluierung bis zur Laufzeit hinauszuzögern.

Verfasst: Donnerstag 30. Juli 2009, 11:23
von Defnull
Nein, er beschreibt, wie man die Endlos-Schleife beim auflösen rekursiver includes umgehen kann.

Verfasst: Donnerstag 30. Juli 2009, 11:38
von lunar
Man umgeht die Endlosschleife dadurch, dass die Auswertung des zweiten Templates bis zur Laufzeit herausgezögert wird, so dass der Ausführungskontext zur Verfügung steht und man die Rekursion abbrechen kann.

Aber wie dem auch sei, ich kann da nirgendwo lesen, dass es "anscheinend auch mit einer Datei" gehen sollte ... das Beispiel benötigt auch zwei Templates für die Rekursion.

Verfasst: Donnerstag 30. Juli 2009, 19:38
von jens
Super das ihr das angesprochen habt!

Das war nämlich mein ursprüngliches Problem mit Exception RuntimeError: 'maximum recursion depth exceeded...

Das dumme ist, man sieht es nur bei settings.TEMPLATE_DEBUG == True ansonsten wird nur eine warnings ausgelöst!