TurboGears - Beinhaltet
Der Inhalt eines anderen XML-Dokuments (insbesondere eines HTML-Dokuments) kann mithilfe von Einschluss-Tags in das aktuelle Dokument aufgenommen werden. Um eine solche Aufnahme zu ermöglichen, muss der XInclude-Namespace im Stammelement des HTML-Dokuments deklariert werden.
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude >
Die obige Deklaration gibt an, dass die include-Direktive enthält ‘xi’Präfix. Verwenden Sie die xi: include-Direktive wie folgt, um den Inhalt einer anderen HTML-Seite im aktuellen Dokument hinzuzufügen:
<xi:include href = "somepage.html" />
Im folgenden Beispiel enthält root.py den include () -Controller, der include.html verfügbar macht.
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose('hello.templates.include')
def include(self):
return {}
Überschrift und Fußzeile HTML
In include.html wird der Include-Namespace deklariert und der Inhalt von Heading.html und Footer.html hinzugefügt. Hier ist das HTML-Skript von templates \ include.html -
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "heading.html" />
<h2>main content </h2>
<xi:include href = "footer.html" />
</body>
</html>
Hier ist der Code templates \ Heading.html -
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h1>This is page Header</h1>
</body>
</html>
Das Folgende ist die Vorlage \ footer.html
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h3>This is page footer</h3>
</body>
</html>
Starten Sie die Entwicklung mit einem Getriebe und geben Sie ein http://localhost:8080/includeim Browser. Die gerenderte Ausgabe ist wie folgt:
Auf diese Weise kann der modulare Aufbau von Ansichten erreicht werden. Wenn die in xi: include-Direktive erwähnte Ressource nicht verfügbar ist, wird ein Fehler ausgelöst. In einem solchen Fall kann eine alternative Ressource mithilfe von xi: fallback geladen werden.
<xi:include href = “main.html”>
<xi:fallback href = ”default.html”/>
</xi.include>
Die Aufnahme von Inhalten kann als href-Attribut, das Ausdrücke enthalten kann, dynamisch gestaltet werden.
Fügen Sie den folgenden Controller in root.py hinzu.
@expose('hello.templates.ref-include')
def refinclude(self):
return {'pages':['heading','main','footer']}
Speichern Sie den folgenden Code als ref-include.html im Vorlagenordner.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:py = "http://genshi.edgewall.org/"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "${name}.html" py:for = "name in pages" />
</body>
</html>
Stellen Sie vor dem Starten des Servers sicher, dass der Vorlagenordner die Überschriften.html, main.html und footer.html enthält. Eingebenhttp://localhost:8082/refinclude im Browser, um die folgende Ausgabe zu erhalten