2017年9月10日 星期日

Python Flask.Blueprint

Python Flask.Blueprint

簡單

Blueprint可用來設置route,專案只要一大,整個api或是web的route就會跟著複雜。
總不可能把所有的route都設置在同一支程式上,這樣子對整個專案的維護性過低。
不過如果你只有一個api的話…記得就放同一支就好了!

範例

主程式
#  __init__.py

from flask import Flask
from manu import testRoute

app = Flask('__name__')
app.register_blueprint(testRoute)

if __name__ == '__main__':
    app.run(debug=True)
生產用route
#  manu.py

from flask import Blueprint
testRoute = Blueprint('testRoute', __name__)

@testRoute.route('/manu/manu1')  #  路由上標名了生產
def testroute():
    return '<h1>You win!</h1>'

@testRoute.route('/manu/manu2')  #  路由上標名了生產
def testroute2():
    return '<h1>You win2!</h1>'

@testRoute.route('/manu/manu3')  #  路由上標名了生產
def testroute3():
    return '<h1>You win3!</h1>'
連結網址
http://127.0.0.1:5000/manu/manu1

加上前綴

你要建構的是一個讓很多route可以清楚分開交通網是吧。
這是一個生產用的route,以後會有財務、業務…等,沒錯吧!
所以我們希望這個路由是區隔而且明確的。
可是你不可能吃飽閒閒每一個路由都寫著’/manu/xxx’,’/manu/yyy/’…
太不科學了,所以我們就會需要用到url_prefix了!
註冊url_prefix有兩個方式,一個是在產生Blueprint物件的時候給,一個是在註冊的時候給!
#  產生物件的時候
testRoute = Blueprint('testRoute', __name__, url_prefix='/manu')
#  註冊blueprint的時候
app.register_blueprint(testRoute, url_prefix='/manu')
基本上,原廠建議是在註冊的時候再給,日後好維護。

範例

要來調整一下我們的程式…
#  __init__.py

from flask import Flask
from manu import testRoute

app = Flask('__name__')
app.register_blueprint(testRoute, url_prefix='/manu')

if __name__ == '__main__':
    app.run(debug=True)
from flask import Blueprint
testRoute = Blueprint('testRoute', __name__)

@testRoute.route('/manu1')  #  路由拿掉剛才標上的生產
def testroute():
    return '<h1>You win!</h1>'

@testRoute.route('/manu2')  #  路由拿掉剛才標上的生產
def testroute2():
    return '<h1>You win2!</h1>'

@testRoute.route('/manu3')  #  路由拿掉剛才標上的生產
def testroute3():
    return '<h1>You win3!</h1>'
連結網址
http://127.0.0.1:5000/manu/manu2
這樣,程式碼是不是優美多了!

沒有留言:

張貼留言