2009-06-21 6 views

Antwort

4

Es gibt eine Reihe von Möglichkeiten, dies zu handhaben, so dass Sie können eine Methode wählen, die am besten Ihren persönlichen Stil oder Bedürfnissen entspricht:

  1. Template Kontextvariable: wie von Alex beantwortet können Sie setzen Ihr Inhalt wird in eine Kontextvariable eingefügt, die im Kontext jeder von jeder Ansicht erstellten Vorlage enthalten ist. Django bietet sogar einen Mechanismus, um dies automatisch zu tun, genannt context processor. Vorteile: sehr einfach. Nachteile: Aktualisiert neuen Inhalt in Client-Browsern nicht dynamisch.

  2. AJAX dynamisches Laden: Wie von Alex und Dave erwähnt, können Sie Ihren Inhalt dynamisch mit AJAX-Methoden laden. Als ein Beispiel mit jQuery, würden Sie einen Platzhalter in Ihre Vorlage so etwas wie <div id="twitterfeed"></div> und dann in einem JavaScript-Block in Ihrer Vorlage put $("#twitterfeed").load("{% url twitterfeed %}"); setzen, wobei twitterfeed ist eine URL so in Ihrem urls.py benannt. Vorteile: Browser werden dynamisch aktualisiert. Nachteile: kann schwierig sein, wenn Sie Javascript nicht kennen.

  3. Inclusion tag: Django stellt eine Art von Template-Tag ein inclusion tag genannt, die im Grunde ein eigenes Template-Tag ist, die dynamische Inhalte wiedergeben kann. In gewisser Weise ähnelt es einer Kontextvariablen, außer dass Ihr Code zum Generieren des Inhalts nur aufgerufen wird, wenn Sie das benutzerdefinierte Vorlagen-Tag in Ihrer Vorlage verwenden, anstatt für jede Ansicht aufgerufen zu werden. Ein weiterer Vorteil ist, dass der Inhalt aus einer eigenen Vorlage generiert wird. Sie könnten dies natürlich mit einer normalen Kontextvariablen tun, aber es ist nicht so sauber (IMHO) wie ein Inclusion-Tag. Vorteile: sehr einfach, sauber. Nachteile: Aktualisiert neuen Inhalt in Client-Browsern nicht dynamisch.

+0

Einschluss-Tag, FTW .. das ist genau das, was ich dachte, sollte existieren. Vielen Dank. Ich brauche AJAXy nicht wirklich erfrischend ... – chiggsy

1

Der einfachste Ansatz ist {{ mycontent }} in Ihrer Vorlage zu verwenden (wo wollen Sie die dynamisch generierte Inhalte angezeigt werden) und stellen die Korrespondenz zwischen mycontent und seinen Wert im Kontext Sie die Vorlage machen verwenden - das heißt, die grundlegendste Teil von Djangos Templating.

Wenn Sie wollen, dass Sie Ajax-Unterstützung wollen, wobei Javascript auf der Seite solche Inhalte kontinuierlich aktualisiert, je nachdem, was der Server zu jeder Zeit haben möchte, schlage ich vor, das dojango, das Dojo/Django-Integrationsprojekt zu betrachten - - Es ist noch nicht so ausgereift wie Dojo und Django alleine (nicht Version 0.4), aber es ist bereits verwendbar und nützlich.

1

Eine gängige Technik besteht darin, ein Platzhalter-div im generierten Inhalt zu belassen und dann das div-in auf der Clientseite über einen AJAX-Aufruf aus Javascript, das Sie auf der Seite einschließen, zu füllen.

Das bietet Ihnen den Vorteil einer cachefähigen (schnell ladenden) Primärseite mit separaten dynamischen Bits. Abhängig davon, wie live die dynamischen Bits sein sollen, können Sie sie sogar für kürzere Zeiträume zwischenspeichern.

+0

Nein, ich war nicht auf der Suche nach einer Ajax-Lösung. __However__ Ich mag sicherlich die Idee von ständig aktualisierten Sachen auf meiner Website, wie Sie vorschlagen ... Ah Feature Creep, wie ich dich vermisst habe ... – chiggsy

Verwandte Themen