1. 程式人生 > 資訊 >榮耀 Magic3 至臻版明日開售:驍龍 888 Plus + 六邊形鏡頭設計,7999 元

榮耀 Magic3 至臻版明日開售:驍龍 888 Plus + 六邊形鏡頭設計,7999 元

模板繼承

jinja中最強大的是模板繼承,模板繼承允許你構建一個包含你站點共同元素的基 本模板“骨架”,並定義子模板可以覆蓋的 塊 。

舉個栗子來說

基本模板

base.html

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- 上述3個meta標籤*必須*放在最前面,任何其他內容都*必須*跟隨其後! -->
  <title>{% block title %}線上問答系統{% endblock %}</title>
  {% block header %}
  {% endblock %}
</head>

<body class="layout" id="top">
{% block content %}
{% endblock %}
<div id="footer">
        {% block footer %}
        &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>.
        {% endblock %}
</div>
{% block js %}
{% endblock %}
</body>

</html>

在上面一共有5個可以填充的塊{%block%},有的 block 標籤 告訴模板引擎子模板可以覆蓋模板中的這些部分。

子模板

index.html

{% extends "base.html" %}
{% block title  %}
{{  super() }}-文章首頁
{% endblock %}
{% block  header%}
     <style type="text/css">
    p{
        color:red;
        font-size: 30px;
    }
    </style>
{% endblock %}
{% block content %}
    <p>你好子模版首頁</p>
{% endblock %}

{% extend %} 標籤是這裡的關鍵。它告訴模板引擎這個模板“繼承”另一個模板。 當模板系統對這個模板求值時,首先定位父模板。 extends 標籤應該是模板中的第一個 標籤。
注意,子模板中沒有定義footer塊,這裡會使用父模板中的值

super()塊

可以呼叫super來渲染父級塊的內容,這回返回父級塊的結果
比如上述案例中:

{% block title %}
{{super()}}-文章詳情
{% endblock %}

這裡會網頁中顯示:線上管理系統-文章詳情