JensDiemer

Mein Blog...

Tag Cloud 3dsmax [+] | 64bit [+] | addons [+] | Aptana [+] | ASUS [+] | AVI [+] | backup [+] | BeOS [+] | bilder [+] | blog [+] | browser [+] | CPU [+] | creole [+] | django [+] | django-dbpreferences [+] | django-dbtemplates | django-tagging [+] | django-tools [+] | django-weave [+] | dokumentation [+] | Eclipse [+] | fernsehen [+] | firefox [+] | forms [+] | formset [+] | foto [+] | git [+] | Haiku [+] | handy [+] | hardware [+] | i18n [+] | javascript [+] | jquery [+] | Kino [+] | lame [+] | links [+] | linux [+] | locales [+] | Loveparade [+] | mac [+] | markup [+] | mencoder [+] | merkwürdig [+] | modul [+] | mp3 [+] | netzwerk [+] | nokia [+] | online [+] | opensource [+] | ovi [+] | Petition [+] | pip [+] | plugin [+] | plugins [+] | podcast [+] | pydev [+] | pylucid [+] | pys60 [+] | python [+] | relase [+] | release [+] | router [+] | settings [+] | software [+] | sqlite [+] | standalone [+] | svn [+] | thunderbird [+] | Tip [+] | ubuntu [+] | ubuntuusers [+] | unittest [+] | video [+] | virtualbox [+] | virtualenv [+] | vista [+] | web [+] | webspace [+] | win7 [+] | windows [+] | xfce [+] | xp [+] | xvid [+]

↑ django template: rekusive Darstellung...  #

Vor 1 Jahr, 1 Monat veröffentlicht, durch jens.

Eine Lösung um rekusive Daten mit der django Template engine darzustellen, ist die Aufteilung in zwei Template Dateien und das einbinden per include. Ein Beispiel:

↑ SiteMap.html  #

HTML
1
2
<h1>SiteMap</h1>
{% include "SiteMap_items.html" %}

↑ SiteMap_items.html  #

HTML
1
2
3
<ul>
{% for node in nodes %}
    
  • {{ node.name }} {% with "SiteMap_items.html" as filename %} {% with node.subnodes as nodes %} {% if nodes %}
      {% include filename %}
    {% endif %} {% endwith %} {% endwith %}
  • {% endfor %} </ul>

    Update:
    Hab SiteMap_items.html geändert. Denn ganz wichtig: der Dateiname muß bei include als Variable übergeben werden. Ansonsten bekommt man eine Endlosschleife! Das dumme ist, man sieht es nur bei settings.TEMPLATE_DEBUG == True ansonsten wird nur eine warnings ausgelöst!

    Update2:
    Noch ein Hacken gibt es. Weil man den Dateinamen als Variable übergibt, wird das angegebene Template neu geladen. Somit verursacht das ganze einen recht großen Mehraufwand, der eigentlich unnötig ist. Das habe ich daran gemerkt, das dbtemplate sehr viele Datenbank Abfragen verursacht. Allerdings habe ich dafür ein Ticket geöffnet, denn durch einfaches Caching kann man zusätzliche DB Abfragen vermeiden. Außerdem sollte man das normale dbtemplates caching aktivieren.

    Siehe auch:

    (Last update: 20. Nov. 2009, 11:01 by jens.)

    tags django [+] | django-dbtemplates | Tip [+]
    0 comments...
    Syndication-Feed-Format: