1. 程式人生 > >Flask_學習筆記_09: Flask中的繼承

Flask_學習筆記_09: Flask中的繼承

今天來學習一個新知識點:Flask中的繼承。其實在Python當中也有繼承,定義一個類(父類),在另外一個類(子類)中繼承父類的方法或者屬性,也可以重寫父類的方法或者屬性。
類似的,Flask當中也有繼承,這個繼承主要是網頁template的繼承,一般不同情況下,一個網站下面所有子頁面的導航欄和底部資訊應該是同一個風格的,具體子頁面的內容應該是不同的,如果導航欄在home頁面有了,其它子頁面也要用到相同的導航欄,是不是相同的程式碼也要在子頁面中再寫一遍?Flask中提供了一種繼承的方式來實現程式碼複用,大大節省了開發時間。

舉個例子吧,一個首頁,一個登入頁面。

from flask import Flask, render_template
import config

app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('index.html')

@app.route('/login/')
def login():
    return render_template('login.html')

if __name__ == '__main__':
    app.run()

base.html程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <style>
        .nav{
            background: #3a3a3a;
            height: 65px;
        }
        ul{
            overflow: hidden;
        }
        ul li{
            float: left;
            list-style: none;
            padding: 0 10px;
            line-height: 65px;
        }
        ul li a{
            color: white;
        }
    </style>
</head>
<body>
  <div class="nav">
      <ul>
          <li><a href="#">首頁</a></li>
          <li><a href="#">新建帖子</a></li>
      </ul>
  </div>
{% block content %}

{% endblock %}
</body>
</html>

首頁程式碼:

{% extends 'base.html' %}
{% block title %}
首頁
{% endblock %}
{% block content %}
  <h1>這是首頁</h1>
{% endblock %}

登入頁面程式碼:

{% extends 'base.html' %}
{% block title %}
登入
{% endblock %}
{% block content %}
<h1>登入頁面</h1>
{% endblock %}