extends
子句从应用模板中引用。extends
子句来继承我的基础模板,这使我可以将页面的公共部分放在一个地方。 base.html模板定义了导航栏,其中包含几个链接,并且还导出了一个content
块。 应用中的所有其他模板都从基础模板继承,并为内容块提供页面的主要内容。title
,navbar
和content
(参见块的完整列表)。 我将更改base.html模板以从bootstrap/base.html派生,并提供title
,navbar
和content
块的实现。 反过来,base.html将为从其派生的模板导出app_content
块以定义页面内容。title
块需要使用<title>
标签来定义用于页面标题的文本。 对于这个块我简单地挪用了原始基本模板中<title>
标签内部的逻辑。navbar
块是一个可选块,用于定义导航栏。 对于此块,我调整了Bootstrap导航栏文档中的示例,以便它在左侧展示网站品牌,跟着是Home和Explore的链接。 然后我添加了个人主页和登录或注销链接并使其与页面的右边界对齐。 正如我上面提到的,我在上面的例子中省略了HTML,但是你可以从本章的下载包中获得完整的base.html模板。content
块中,我定义了一个顶级容器,并在其中设定了呈现闪现消息的逻辑,这些消息现在将显示为Bootstrap警示的样式。 接下来是一个新的app_content
块,这个块用于从其派生的模板来定义他们自己的内容。content
的块中定义了它们的内容。 正如你在上面看到的,Flask-Bootstrap使用名为content
的块,所以我将我的内容块重命名为app_content
。 所以我所有的模板都必须重命名为使用app_content
作为它们的内容块。 例如,这是404.html模板的修改后版本的展示:import
语句与Python导入类似。 这增加了一个wtf.quick_form()
宏,它在单行代码中渲染完整的表单,包括对显示验证错误的支持,并且适配Bootstrap框架的所有样式。