TurboGears - Bao gồm

Nội dung của một tài liệu XML khác (đặc biệt là tài liệu HTML) có thể được đưa vào bằng cách sử dụng các thẻ bao gồm trong tài liệu hiện tại. Để cho phép bao gồm như vậy, không gian tên XInclude phải được khai báo trong phần tử gốc của tài liệu HTML.

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

Khai báo trên chỉ định rằng chỉ thị bao gồm chứa ‘xi’tiếp đầu ngữ. Để thêm nội dung của một trang html khác trong tài liệu hiện tại, hãy sử dụng chỉ thị xi: include như sau:

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

Trong ví dụ sau, root.py chứa bộ điều khiển include (), cho thấy bao gồm.html.

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

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

HTML đầu trang và chân trang

Trong include.html, không gian tên bao gồm được khai báo và nội dung của header.html và footer.html được thêm vào. Đây là tập lệnh HTML của template \ 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>

Đây là mã mẫu \ header.html -

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

Sau đây là các mẫu \ footer.html

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

Bắt đầu phát triển bằng hộp số và nhập http://localhost:8080/includetrong trình duyệt. Kết quả hiển thị sẽ như hình dưới đây -

Bằng cách này có thể đạt được cấu trúc mô-đun của các khung nhìn. Nếu tài nguyên được đề cập trong chỉ thị xi: include không có sẵn, một lỗi sẽ xuất hiện. Trong trường hợp này, một tài nguyên thay thế có thể được tải bằng cách sử dụng xi: dự phòng.

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

Việc bao gồm nội dung có thể được tạo động dưới dạng thuộc tính href có thể chứa các biểu thức.

Thêm bộ điều khiển sau trong root.py.

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

Lưu mã sau dưới dạng ref-include.html trong thư mục mẫu.

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

Trước khi khởi động máy chủ, hãy đảm bảo rằng thư mục mẫu có header.html, main.html và footer.html. Đi vàohttp://localhost:8082/refinclude trong trình duyệt để nhận kết quả sau