### 导航
- [索引](# "总目录")
- [下一页](# "消息闪现") |
- [上一页](# "使用 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
- 许可证
- 术语表