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