Frage

Ich frage mich, ob mir jemand helfen kann, den besten Ansatz für das folgende Problem zu finden. Ich erstelle eine Webanwendung, die die Django -Vorlagen verwendet, um seine Web -UI -Komponente zu konstruieren. Es gibt eine Reihe gemeinsamer HTML -Elemente wie Header / Fußzeile, HTML -Kopf, Masthead usw. Ich möchte diese einmal codieren und sie mit anderen Vorlagen "einschließen / kombinieren", die die Kernanwendungsfunktionen darstellen.

Ist dies mit Django -Vorlagen möglich? Wenn ja, wie könnte ich das erreichen?

War es hilfreich?

Lösung

Sie können Django's verwenden extends Schild. Sagen Sie, Sie hatten einen Kopfball und Fußzeile. Sie könnten eine Vorlage machen, die namens Foo.django genannt wird:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

Dann können Sie eine weitere Vorlage machen, sagen Sie Bar.Django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

... was dann rendern wird:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

Es gibt gute Anweisungen zu Django -Vorlagen bei http://www.djangobook.com/en/1.0/chapter04/.

Andere Tipps

Das {% extends %} und {% include %} Methoden sind gut für Seitenelemente, die keine zusätzlichen Informationen im Kontext benötigen.

Sobald Sie mehr Dinge aus der Datenbank in den Kontext einfügen müssen, sind Vorlagen -Tags nützlich. Als Beispiel die contrib.comments App mit django enthalten definiert a {% get_comment_list %} Template -Tag zum Abrufen von Kommentaren an eine bestimmte Modellinstanz. So würden Sie es verwenden:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

Sie können dies in einer separaten Vorlage speichern und {% include %} es in anderen Vorlagen.

Für Ihren eigenen Inhalt können Sie Ihre eigenen benutzerdefinierten Vorlagen -Tags schreiben. Folgen die Dokumentation. Wann immer möglich, ist es zweckmäßig, Tags mit dem zu schreiben Einfacher Tag Mechanismus. Sie werden praktische vorgefertigte Vorlagen-Tags finden Djangosnippets.org und die Blogosphäre.

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