藍圖
之前我們已經通過代碼瞭解了一些Flask基本的用法,現在出現一個問題,我們要做的功能越來越多,路由是不是都要放在run文件中呢?例如我們在不同的文件都定義了一些路由,如果想要訪問他們,是不是要開啓很多個不同的服務呢?
Flask中提供了藍圖,專門用作Flask的模塊化。
Flask使用藍圖的概念來製作應用程序組件和支持應用程序內部或跨應用程序的通用模式。藍圖可以大大簡化大型應用程序的工作方式,併爲Flask擴展提供了在應用程序上註冊操作的中心手段。Blueprint對象的工作方式與Flask應用程序對象類似,但實際上它不是一個應用程序。相反,它是如何構造或擴展應用程序的藍圖。
總之,藍圖可以使我們的程序更加模塊化,不同功能的路由可以放在不同的模塊下,最後集中到啓動類中。
首先,新建一個flask項目文件,建立文件結構如下圖所示:
主運行文件
from app.movie.view import movie as movie_bp
from app.tag.view import tag as tag_bp
from flask import Flask
if __name__ == '__main__':
app = Flask(__name__)
app.register_blueprint(tag_bp,url_prefix='/tag')
app.register_blueprint(movie_bp,url_prefix='/movie')
app.run(port=9099)
模塊一:標籤
所有的路由和視圖函數依舊單獨寫在一個文件裏面,這裏起名view.py
from flask import Blueprint
tag = Blueprint('tag',__name__)
@tag.route('/')
def index():
return 'ok'
@tag.route('/add/')
def add():
return 'tag add'
模塊二:電影
所有的路由和視圖函數依舊單獨寫在一個文件裏面,這裏起名view.py
from flask import Blueprint
movie = Blueprint('movie',__name__)
@movie.route('/')
def index():
return 'ok'
@movie.route('/add/')
def add():
return 'movie add'
運行結果