- TurboGears 教程
- TurboGears - 首頁
- TurboGears - 概述
- TurboGears - 環境
- TurboGears - 第一個程式
- TurboGears - 依賴項
- TurboGears - 模板服務
- TurboGears - HTTP 方法
- Genshi 模板語言
- TurboGears - 包含
- TurboGears - JSON 渲染
- TurboGears - URL 層次結構
- TurboGears - Toscawidgets 表單
- TurboGears - 驗證
- TurboGears - 閃現訊息
- TurboGears - Cookie 和會話
- TurboGears - 快取
- TurboGears - SQLAlchemy
- TurboGears - 建立模型
- TurboGears - CRUD 操作
- TurboGears - 資料網格
- TurboGears - 分頁
- TurboGears - 管理員訪問
- 授權與認證
- TurboGears - 使用 MongoDB
- TurboGears - 腳手架
- TurboGears - Hook
- TurboGears - 編寫擴充套件
- TurboGears - 可插拔應用程式
- TurboGears - RESTful 應用程式
- TurboGears - 部署
- TurboGears 有用資源
- TurboGears - 快速指南
- TurboGears - 有用資源
- TurboGears - 討論
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,瀏覽器將顯示以下結果。
如上所述,字典物件作為引數集合傳送到 Genshi 模板。此模板包含“佔位符”,這些佔位符將使用從控制器接收的引數動態填充。
讓我們更改 sample() 函式以將字典物件傳送到 sample 模板。
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
在 templates 資料夾中建立 sample.html(templates\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 表單用於傳送表單資料。