Flask_學習筆記_09: Flask中的繼承
阿新 • • 發佈:2018-12-04
今天來學習一個新知識點: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 %}