Frage

Nehmen wir an, ich habe 3 Django -Apps, App, App Land, App Sozial und App Finanziell.

Land ist eine App "Master Navigation". Es listet alle Länder in einer Indexansicht auf und zeigt Details für jedes Land zu seiner Ansicht "Details" angezeigt.

Die Details jedes Landes umfassen ihre sozialen Details (aus der sozialen App) und ihre finanziellen Details (aus der Finanz -App).

Soziale und finanzielle haben beide eine Detailansicht (für jedes Land)

Gibt es eine elegante Möglichkeit, diese Unterschnittsansichten in die von den Ländern bereitgestellte Master-Detailansicht zu "anschließen"? Für jede Länder -Detail -Seite würde ich 2 Registerkarten sehen, die die sozialen und finanziellen Details für dieses Land zeigen.

War es hilfreich?

Lösung

2 Häufige Lösung Ich verwende für dieses Problem:

Teilvorlagen:
Erstellen Sie eine Vorlage für "soziale" und "finanzielle", die keine Dinge aus der Ansicht benötigt, außer dem Objekt, an dem es arbeitet (und verwendet die Objektfunktionen oder Vorlagen -Tags, um sie zu rendern). Dann können Sie es leicht { % %} einschließen (und die benötigte Variable zuerst festlegen).
Diese teilweise Ansicht macht keine vollständige HTML -Seite, sondern nur ein einzelnes Div oder ein anderes HTML -Element, das Sie verwenden möchten. Wenn Sie auch eine "soziale" Seite benötigen, können Sie eine Seite erstellen, die den Header rendert und dann die Teilvorlage enthält. Sie können eine Konvention wie _template.html für die Teilvorlage und Vorlage und Vorlage für die reguläre Vorlage verwenden.

Ajax:
Machen Sie Ihre "sozialen" und "finanziellen" Ansichten darauf aufmerksam, dass Sie in XMLHTTPrequest genannt werden (request.is_ajax ()). Wenn sie es sind, geben sie nur ein DIV -Element zurück, ohne dass der gesamte HTML um ihn herum ist. Auf diese Weise kann Ihre Master -Seite ohne sie rendern und diesen Inhalt im laufenden Fliegen hinzufügen.
Der Ajax Way hat mehrere Vorteile: Sie machen die Plugin -Ansichten nicht auf derselben Anfrage wie die gesamte Seite Die relevanten Plugin -Ansichten zu fragen.
Außerdem können Sie die normale Ansicht verwenden, um Daten zu generieren, die Sie in der Vorlage benötigen (was Sie in der Methode der Teilvorlagen nicht wirklich tun können).

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