Frage

Ich mag Dinge wie Twitter-Status enthalten, oder leckere Tags, in meinen django-Vorlagen.

Diese Dinge sind dynamisch, aber regelmäßig. Wie würde dies geschehen?

War es hilfreich?

Lösung

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 beantworten Sie Ihre Inhalte in eine Kontextvariable setzen können, die von jeder Ansicht erstellt im Zusammenhang mit jeder Vorlage enthalten ist. Django bietet auch einen Mechanismus, um dies automatisch zu tun, eine so genannte Kontextprozessor . Vorteile: sehr einfach. Nachteile:. Werden nicht dynamisch neue Inhalte auf dem Client-Browser aktualisieren

  2. AJAX dynamische Belastung : wie von Alex und Dave erwähnen Sie Ihre Inhalte mit AJAX Methoden dynamisch laden können. Als ein Beispiel mit jQuery, würden Sie einen Platzhalter in der Vorlage so etwas wie <div id="twitterfeed"></div> setzen und dann in einem JavaScript-Block in der Vorlage put $("#twitterfeed").load("{% url twitterfeed %}"); wo twitterfeed eine URL ist so in Ihrem urls.py. benannt Pro: dynamisch Browser aktualisieren. Nachteile:. Kann schwierig sein, wenn Sie Javascript nicht wissen

  3. Inclusion-Tag : Django bietet eine Art von Template-Tag genannt ein Aufnahme-Tag , die im Grunde ein eigener Template-Tag ist, die dynamischen Inhalte wiedergeben kann. In gewisser Weise ist es ähnlich wie bei einem Kontextvariable, mit der Ausnahme des Code den Inhalt zu erzeugen und nur, wenn Sie den benutzerdefinierten Vorlage Tag in Ihrer Vorlage aufgerufen werden, anstatt dass sie für jede Ansicht genannt. Ein weiterer Vorteil ist der Inhalt aus einer Vorlage seines eigenen erzeugt wird. Man könnte dies mit einem normalen Kontextvariable natürlich, aber es ist nicht so sauber (IMHO) als Einschluss-Tag. Vorteile: sehr einfach, sauber. Nachteile:. Werden nicht dynamisch neue Inhalte auf dem Client-Browser aktualisieren

Andere Tipps

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

Wenn Sie das meinen, ist, dass Sie Ajax-Unterstützung mögen, wobei Javascript auf der Seite kontinuierlich solche Inhalte aktualisiert nach dem, was der Server will es zu einem bestimmten Zeitpunkt sein, schlage ich vor der Suche in dojango , das Dojo / Django Integrationsprojekt - es ist noch nicht so ausgereift wie jeder von Dojo und Django auf ihre eigenen sind (nicht Version 0,4 noch) nicht, aber es ist bereits einsetzbar und nützlich.

Eine übliche Technik ist ein Platzhalter div im erzeugten Inhalt zu verlassen, dann die div füllen Sie auf der Client-Seite über einen AJAX-Aufruf von Javascript, die Sie auf der Seite enthalten.

Das gibt Ihnen den Vorteil eine Cache gespeichert wird (schneller Laden) Primärseite mit separaten dynamischen Bits aufweisen. Je nachdem, wie leben wollen Sie die dynamischen Bits, können Sie können sie sogar für kürzere Laufzeiten zwischenzuspeichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top