TurboGears - 模板服務



雖然可以將 HTML 內容返回給瀏覽器,但對於更高階的輸出,始終建議使用模板引擎。在 gearbox 快速啟動的全棧專案中,Genshi 被啟用為預設的模板渲染器。但在最小應用程式中,需要安裝並啟用 Genshi(或任何其他模板引擎,例如 Jinja)。Genshi 模板引擎允許使用純 XHTML 編寫模板,並在編譯時驗證它們以檢測問題並防止提供損壞的頁面。

模板使用點表示法引用。在我們的 Hello 專案中,提供了一個 templates 目錄來儲存模板網頁。因此,sample.html 將被引用為 hello.templates.sample(未提及副檔名)。TurboGears 透過 expose 裝飾器使用 tg.render_template() 函式將控制器方法連結到該模板。

公開的控制器函式返回一個 Python 字典物件。該字典物件又傳遞給連結的模板。模板中的佔位符將用字典值填充。

首先,讓我們顯示一個包含純 html 指令碼的網頁。由於我們不打算傳送任何要解析到 HTML 指令碼中的資料,因此公開的控制器返回一個空字典物件

如何建立一個示例 HTML

我們的 sample.html 如下所示。確保將其儲存在專案的 templates 目錄中。

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
   </body>
</html>

root.py 中新增 sample() 函式,並透過它公開 sample.html。

@expose("hello.templates.sample")
   def sample(self):
      return {}

啟動 Web 伺服器後,輸入 URL https://:8080/sample,瀏覽器將顯示以下結果。

Display Result

如上所述,字典物件作為引數集合傳送到 Genshi 模板。此模板包含“佔位符”,這些佔位符將使用從控制器接收的引數動態填充。

讓我們更改 sample() 函式以將字典物件傳送到 sample 模板。

@expose("hello.templates.sample")
   def sample(self,name):
      mydata = {'person':name}
      return mydata

在 templates 資料夾中建立 sample.htmltemplates\sample.html

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, my name is ${person}!.</h2>
   </body>
</html>

在上面的 HTML 程式碼中,${person} 是佔位符。在瀏覽器中輸入 URL https://:8080/sample?name=MVL。此 URL 對映到我們根控制器中的 sample() 方法。它返回一個字典物件。這將由 templates 目錄中連結的模板頁面 sample.html 獲取。然後,網頁中的 ${person} 將被 MVL 替換。

也可以在控制器函式中訪問 HTML 表單資料。HTML 表單用於傳送表單資料。

Result
廣告
© . All rights reserved.