2012-06-07 11 views
5

Ich habe eine Vorlage, die eine Menge von Includes enthält, die für Loops verschachtelt sind. Wir haben verschiedene Teile von Seiten in separate Vorlagendateien aufgeteilt, weil wir sie wiederverwenden, indem wir sie für verschiedene Ansichten auf verschiedene Arten zusammenfügen.Django Templates - Verschachtelung beinhaltet in Loops

Zum Beispiel: {% für Benutzer in Benutzer%} { % include "userDetail.html" %} { % endfor%}

Wir in unserer Datenbank einige 40k Datensätze haben. Ich habe das Problem auf das Templating-System aufmerksam gemacht. render_to_response benötigt ungefähr 11 Sekunden zum Ausführen. Ich dachte mir, vielleicht hat Django die Vorlagen nicht zwischengespeichert, also war es vielleicht ein I/O Problem.

Ich habe eine unserer Vorlagen geschmälert, so dass es überhaupt keine Includes gibt, und ungefähr 5 Sekunden abrasiert. Aber das ist nicht sehr hilfreich in unserer Situation, wo wir einen großen Teil des Vorlagencodes wiederverwenden.

Kennt jemand eine Lösung für dieses Problem? Oder hat jemand andere Ideen, warum render_to_response so lange dauern würde?

[Bearbeiten] Ich sollte erwähnen, dass ich Django Caching Vorlagenlader aktiviert, und es nur etwa 1 Sekunde gespeichert. Das Reduzieren der Vorlage war signifikant schneller.

+0

Sie im Python-Code anstelle der Vorlage den Looping. Es sollte ein bisschen schneller sein. – Blender

Antwort

0

Probieren Sie Jinja2, es ist ~ 10x schneller als Djangos Templating-Bibliothek, von dem, was ich gelesen habe.