TurboGears - Inclui

O conteúdo de outro documento XML (especialmente documento HTML) pode ser incluído usando tags de inclusão no documento atual. Para permitir tal inclusão, o namespace XInclude deve ser declarado no elemento raiz do documento HTML.

<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude >

A declaração acima especifica que a diretiva include contém ‘xi’prefixo. Para adicionar conteúdo de outra página html no documento atual, use a diretiva xi: include da seguinte maneira -

<xi:include href = "somepage.html" />

No exemplo a seguir, root.py contém o controlador include (), que expõe include.html.

from hello.lib.base import BaseController
from tg import expose, request

class RootController(BaseController):
   @expose('hello.templates.include')
   def include(self):
      return {}

HTML de cabeçalho e rodapé

Em include.html, o namespace include é declarado e os conteúdos de header.html e footer.html são adicionados. Aqui está o script HTML de 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>

Aqui está o código templates \ header.html -

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h1>This is page Header</h1>
   </body>
</html>

A seguir está o template \ footer.html

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h3>This is page footer</h3>
   </body>
</html>

Comece o desenvolvimento usando uma caixa de engrenagens e entre http://localhost:8080/includeno navegador. A saída renderizada será como mostrado abaixo -

Desta forma, a construção modular das vistas pode ser alcançada. Se o recurso mencionado na diretiva xi: include não estiver disponível, um erro será gerado. Nesse caso, um recurso alternativo pode ser carregado usando xi: fallback.

<xi:include href = “main.html”>
   <xi:fallback href = ”default.html”/>
</xi.include>

A inclusão de conteúdo pode ser tornada dinâmica como um atributo href que pode conter expressões.

Adicione o seguinte controlador em root.py.

@expose('hello.templates.ref-include')
   def refinclude(self):
      return {'pages':['heading','main','footer']}

Salve o código a seguir como ref-include.html na pasta de modelos.

<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>

Antes de iniciar o servidor, certifique-se de que a pasta de modelos tenha um header.html, main.html e footer.html Entrarhttp://localhost:8082/refinclude no navegador para obter o seguinte resultado