Ich folgte der Django "ersten App" Tutorial, und jetzt frage ich mich, wie ich Vorlagen schreiben könnte, die die gesamte Website verwenden wird. Ich kann die Vorlagen für jede Ansicht schreiben, aber wie schreibe ich eine Vorlage, die auf jeder Seite ist und dann die 'Sub-Vorlagen' in einen 'Inhaltsblock' einfügt?Wie schreibe ich eine Vorlage, die auf jeder Seite verwendet wird und dann Untervorlagen enthält?
Antwort
Siehe Abschnitt Template Inheritance der Django-Vorlage.
Grundsätzlich Sie eine Vorlage erstellen, die die „Basis“ ist:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="stylesheet" href="style.css" />
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
und als (zum Beispiel) speichern „base.html“ in Ihrem Vorlagenverzeichnis, dann wird jede spezifische Seitenvorlage wie folgt aussieht:
{% extends "base.html" %}
{% block title %}My amazing blog{% endblock %}
{% block content %}
{% for entry in blog_entries %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}
Lange Rede kurzer Sinn, sollten Sie eine Basisvorlage schreiben und diese Vorlage dann erweitern. Dies wird als Template-Vererbung bezeichnet und ist gut erklärt. here
SO Antworten sollten nützlich sein, ohne einen Link zu klicken, wenn möglich, auch wenn Sie im Grunde nur aus dem Link wie ich zitieren hat getan. – agf
Ich hatte einige Zweifel an der "Gültigkeit" meiner Antwort, aber dann dachte ich, es sei in Ordnung, da wir zur gleichen Zeit mit fast der gleichen Antwort antworteten; dann hast du es wahrscheinlich bearbeitet. Nächstes Mal werde ich einen Kommentar abgeben, wenn es nur für einen Link ist, danke für die Beratung. – luke14free
Ja, ich posten oft "nur den Link" und fügen dann den Kontext in den nächsten paar Minuten hinzu. Auf diese Weise ist es weniger wahrscheinlich, dass fünf andere genau das Gleiche veröffentlichen, während ich versuche, die Details zu konkretisieren. – agf
- 1. ändert HTML auf auf jeder Seite enthält
- 2. Wie schreibe ich eine Javascript-Schaltfläche, die Daten enthält?
- 3. Wie kann ich eine ASPX-Seite für eine bestimmte Zeit sehen und dann auf andere Seite
- 4. Wie definiere und schreibe ich eine Struktur, die einen Zeiger auf sich selbst enthält?
- 5. LaTeX: Wie mache ich eine vertikale Ganzseitenregel auf jeder Seite?
- 6. Angular2 Untervorlagen?
- 7. Wie schreibe ich eine veränderbare Seite mit iframe?
- 8. String wird gespeichert und dann auf einem anderen JFrame verwendet
- 9. Wie zeige ich zuerst die Alarmbox an und leite dann auf eine Seite mit Abfragezeichenfolgen um?
- 10. Wie kann ich feststellen, welche JSP eine Webseite enthält, die in einer Webanwendung verwendet wird?
- 11. Wie schreibe ich eine Regex, die einem Wort entspricht und dann ein Bild anzeigt?
- 12. Wie verwende ich gebundene Steuerelemente und InsertItemTemplate, um Daten auf einer Seite einzufügen und dann auf eine andere Seite weiterzuleiten?
- 13. Vorlage einer Klasse, die eine Konstante-Typ-Vorlage enthält?
- 14. Verwenden von JavaScript auf einer Aspx-Seite, die eine Masterseite verwendet, die die Seite in einem Formular enthält?
- 15. Wie wird der Kapitelname oben auf jeder Seite eingefügt?
- 16. Wie kann ich eine Entfernungsmatrix erstellen, die die mittleren absoluten Werte zwischen jeder Zeile enthält?
- 17. Wie kann ich die Android Back-Taste auf einer Seite deaktivieren und auf jeder zweiten Seite zur Exit-Taste wechseln?
- 18. Ich brauche die Element-ID von Seite 2 und schreibe eine HTML-Seite
- 19. Wie bringe ich die Seite auf, auf der ich Python-Programme schreibe, kompiliere und ausführe und die Ausgabe sehe?
- 20. Wie man eine Funktion auf jeder Seite in ZF2 ausführt
- 21. Logo auf jeder JavaDoc-Seite
- 22. Wie schreibe ich Django klassenbasierte Ansicht für Formularanzeige und Vorlage von anderen Vorlage?
- 23. Wie auf jeder Seite einer horizontalen Stapelansicht
- 24. Angular Service, der instanziiert wird auf jeder Seite Änderung/Anfrage
- 25. Warum ist Dumping Schienen Daten auf die Seite auf jeder
- 26. Wie schreibe ich die Abfrage?
- 27. Django Fußzeile und Header auf jeder Seite mit {% extends}
- 28. Sitzung auf jeder Seite überprüfen?
- 29. Wie setze ich einen Cookie in Django und rendere dann die Vorlage?
- 30. Wie schreibe ich eine Datums- und Zeitverschiebung?
Ist es sicher, meine Vorlagen aus dem Vorlagenordner der jeweiligen App zu übernehmen, vorausgesetzt, ich benutze den richtigen Loader? Oder ist es besser, nur absolute Pfade zu verwenden? – Addiction2Code
@ Addiction2Code Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Sie können "base.html" wo immer Sie möchten einfügen, solange 'TEMPLATE_LOADERS' und' TEMPLATE_DIRS' in 'settings.py' Ihnen erlauben es zu finden, und dann sollten die spezifischen Seitenvorlagen in App-spezifischen Ordnern sein, wenn Sie mehrere haben Apps. – agf
Schauen Sie sich auch {{block.super}} an, das ist wirklich nützlich, wenn Sie mit Template-Vererbung arbeiten;) – patrick