W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Jinja 最為強(qiáng)大的地方在于他的模板繼承功能,模板繼承允許你創(chuàng)建一個(gè)基礎(chǔ)的骨架模板, 這個(gè)模板包含您網(wǎng)站的通用元素,并且定義子模板可以重載的 blocks 。
聽(tīng)起來(lái)雖然復(fù)雜,但是其實(shí)非常初級(jí)。理解概念的最好方法就是通過(guò)例子。
在這個(gè)叫做 layout.html 的模板中定義了一個(gè)簡(jiǎn)單的 HTML 文檔骨架,你可以 將這個(gè)骨架用作一個(gè)簡(jiǎn)單的雙欄頁(yè)面。而子模板負(fù)責(zé)填充空白的 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 rel="external nofollow" target="_blank" >you</a>.
{% endblock %}
</div>
</body>
在這個(gè)例子中,使用 {% block %} 標(biāo)簽定義了四個(gè)子模板可以重載的塊。 block 標(biāo)簽所做的的所有事情就是告訴模板引擎: 一個(gè)子模板可能會(huì)重寫(xiě)父模板的這個(gè)部分。
子模板看起來(lái)像這個(gè)樣子:
{% 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 %} 是這個(gè)例子的關(guān)鍵,它會(huì)告訴模板引擎這個(gè)模板繼承自另一個(gè)模板的, 模板引擎分析這個(gè)模板時(shí)首先會(huì)定位其父父模板。extends 標(biāo)簽必須是模板的首個(gè)標(biāo)簽。 想要渲染父模板中的模板需要使用 {{ super() }}。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: