Frage

Ich habe eine django Ansicht, und diese Ansicht gibt eine Tabelle, die asynchron mit einem Ajax-Aufruf gefüllt wird.

Aus der Sicht des Design, welches sollte ich wie folgt vor:

  1. die django Ansicht, über Ajax aufgerufen wird, gibt den Inhalt der Tabelle als Json Antwort, html Aufschläge für jede Zelle enthält. Der JavaScript-Callback-Handler nimmt den Inhalt und Klapse sie unberührt in die Tabellenzellen.
  2. die django Ansicht, über Ajax aufgerufen wird, gibt reine Daten über das, was in der Tabelle gehen sollte, wieder als Json Antwort. Der Asynchron Javascript Rückruf nimmt die Daten, Formate sie mit dem richtigen Markup, und legt es in die Tabelle.

Mit anderen Worten, wer die Verantwortung für die Markup der Zellinhalt Formatierung hat? die Ansicht oder die Javascript?

Ich wäre versucht, die ersten zu sagen, da schon der Blick auf Inhalt markiert zurück. Wenn es eine json enthält ausgezeichneten Content gibt, gibt es nicht viel Unterschied.

Ich möchte Ihren Standpunkt hören.

Keine korrekte Lösung

Andere Tipps

Wenn Sie die ganze Tabelle sind bevölkern, können Sie Ihre Tabelle in einer eigenen Vorlage setzen können und das Rück des html Tisch über Ajax / json.

Sie müssen die Originalvorlage bearbeiten, um die Tabellenvorlage enthalten:

 {% include "myapp/_table.html" %}

Und in der Ansicht, kehrt die gerenderte Vorlage als json Variable, die Ihr Javascript in ersetzen wird:

 return { 'table': render_to_string("myapp/_table.html", context) }

Dieser Ansatz ist gut, wo man immer die gesamte Tabelle aktualisieren möchten, und die Darstellung der Tabelle erfordert nicht den vollen Kontext. Ich bin mir nicht sicher, was die Leistung ist wie, aber es ist eine saubere Art und Weise Teil der Seite zu aktualisieren, da Sie nur einmal Ihre Tabelle definiert werden.

Es hängt (wie so oft).

Wenn die Daten nur hier angefordert werden, und jetzt wäre es einfacher und weniger fehleranfällig sein, nur mit dem gleichen Satz von Vorlagen auf serverseitige lassen machen, die bereits die Standardansicht wiedergegeben.

Wenn Sie jedoch von Anwendungsfällen denken konnten, wo die Daten würden an anderen Stellen benötigt werden (wie Auto-Vervollständigen-Felder), wäre es besser, JavaScript lassen die Arbeit machen und einen sauberen, wiederverwendbaren JSON-Export erstellen.

Fügen Sie diese Optionen, um alle anderen Antworten, und es ist endlich an Ihnen zu entscheiden.

In einem MVP System wie Django entscheidet die Ansicht, welche Daten sollte der Moderator entscheidet gezeigt, und, wie es angezeigt werden soll. Deshalb ist die JavaScript sollte den Großteil der Formatierung tun, es sei denn es intractably schwierig erweist, dies zu tun.

Es ist eine gute Unabstrusive Javascript zu üben, auch von einigen Leuten genannt, wie Hijax

Also, zunächst eine Standard-Seite hat, dass präsentiert die Tabelle zusammen mit dem Rest der Seite, mit Tabelle in einem bestimmten django-Template-Block.

Sobald Sie diese haben, können Sie sind der Teil der django-Vorlage innerhalb eines „wenn nicht Ajax“ erweitert, so dass Sie nur den gewünschten Tabellenteil in der Ajax-Antwort erhalten, die Sie in dem Client auf die erforderliche div laden können.

Es ist un-nötig und redundante das Markup zweimal einmal auf dem Server und einmal auf dem Client, in Javascript zu halten.

daher würde ich die erste Option bevorzugen, von Server-Redering und Client nur die gerenderte HTML geladen werden.

Ich habe vor über diese mehrmals kommen, und ich opt im Allgemeinen für die letztere, wo die Sicht kehrt reine JSON.

Allerdings ist der Ansatz, den Sie wählen sollten, hängt definitiv von mehreren Faktoren ab, von denen eine gezielte Geräte (und deren CPU / Netzwerkbeschränkungen). Reine JSON wird in kleineren Nutzlasten im Allgemeinen zur Folge und kann so optimal ist für mobile Geräte.

Es kann auch sinnvoll sein, beide HTML und JSON-Versionen Ihrer Inhalte zu belichten. Dies ist besonders hilfreich, wenn Sie suchen eine sehr leichte API an einem gewissen Punkt für Ihre Website zu erstellen.

Schließlich können Sie eine Bibliothek wie John Resig verwenden Mikro-Templating oder Closure Templates clientseitige HTML-Generierung zu vereinfachen.

ich mit der ersten Wahl gehen würde, Sinus es mehr Profis für Anwender präsentiert: Seite geladen wird sofort (keine Wartezeit für Asynchron-Aufruf), benötigt keine JS (beispielsweise für Mobilgerät)

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