### 導航
- [索引](# "總目錄")
- [下一頁](# "消息閃現") |
- [上一頁](# "使用 WTForms 進行表單驗證") |
- [Flask 0.10.1 文檔](#) ?
- [Flask 代碼模式](#) ?
# 模板繼承
Jinja 最為強大的地方在于他的模板繼承功能,模板繼承允許你創建一個基礎的骨架模板,這個模板包含您網站的通用元素,并且定義子模板可以重載的 **blocks** 。
聽起來雖然復雜,但是其實非常初級。理解概念的最好方法就是通過例子。
### 基礎模板
在這個叫做 layout.html 的模板中定義了一個簡單的 HTML 文檔骨架,你可以將這個骨架用作一個簡單的雙欄頁面。而子模板負責填充空白的 block:
~~~
<!doctype html>
<html>
<head>
{% block head %}
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div>
<div id="footer">
{% block footer %}
© Copyright 2010 by <a href="http://domain.invalid/">you</a>.
{% endblock %}
</div>
</body>
~~~
在這個例子中,使用 {%block%} 標簽定義了四個子模板可以重載的塊。 block標簽所做的的所有事情就是告訴模板引擎: 一個子模板可能會重寫父模板的這個部分。
### 子模板
子模板看起來像這個樣子:
~~~
{% extends "layout.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
{% endblock %}
~~~
{%extends%} 是這個例子的關鍵,它會告訴模板引擎這個模板繼承自另一個模板的,模板引擎分析這個模板時首先會定位其父父模板。extends 標簽必須是模板的首個標簽。想要渲染父模板中的模板需要使用 {{super()}}。
? 版權所有 2013, Armin Ronacher.
- 歡迎使用 Flask
- 前言
- 給有經驗程序員的前言
- 安裝
- 快速入門
- 教程
- 介紹 Flaskr
- 步驟 0: 創建文件夾
- 步驟 1: 數據庫模式
- 步驟 2: 應用設置代碼
- 步驟 3: 創建數據庫
- 步驟 4: 請求數據庫連接
- 步驟 5: 視圖函數
- 步驟 6: 模板
- 步驟 7: 添加樣式
- 福利: 應用測試
- 模板
- 測試 Flask 應用
- 記錄應用錯誤
- 配置處理
- 信號
- 即插視圖
- 應用上下文
- 請求上下文
- 用藍圖實現模塊化的應用
- Flask 擴展
- 與 Shell 共舞
- Flask 代碼模式
- 大型應用
- 應用程序的工廠函數
- 應用調度
- 使用 URL 處理器
- 部署和分發
- 使用 Fabric 部署
- 在 Flask 中使用 SQLite 3
- 在 Flask 中使用 SQLAlchemy
- 上傳文件
- 緩存
- 視圖裝飾器
- 使用 WTForms 進行表單驗證
- 模板繼承
- 消息閃現
- 用 jQuery 實現 Ajax
- 自定義錯誤頁面
- 延遲加載視圖
- 在 Flask 中使用 MongoKit
- 添加 Favicon
- 數據流
- 延遲請求回調
- 添加 HTTP Method Overrides
- 請求內容校驗碼
- 基于 Celery 的后臺任務
- 部署選擇
- mod_wsgi (Apache)
- 獨立 WSGI 容器
- uWSGI
- FastCGI
- CGI
- 聚沙成塔
- API
- JSON 支持
- Flask 中的設計決策
- HTML/XHTML 常見問題
- 安全注意事項
- Flask 中的 Unicode
- Flask 擴展開發
- Pocoo 風格指引
- Python 3 支持
- 升級到最新版本
- Flask Changelog
- 許可證
- 術語表