开始之前,我相信你已经有碰过flask的经验,或是至少知道藉由
pip install Flask
来进行安装。
要提到blue_print,首先要提到为甚么我们要使用他。
当你的网页功能很多,已经超过了30个路由功能挤在了你的app.py。
你的app.py 写了超过500行的程式码,这时候你的PM或是你的客户跑来跟你说我的某个功能要改一下,而且我也不想付你半毛钱。
这时候你的头脑开始高速运转并且烧了起来,这个该死的功能到底在app.py的第几行呢?
你不知道,直到从大大的口中得知了blue_print的存在。
你的生活出现了改变,至少是你的flask程式码的品质出现了改变。
你可以把许多功能分门别类写在不同的py档,并且能从他们的名子中知道哪些功能在那里了。
https://github.com/wilsonsujames/bule_print
你可以把上面的repository 自己git clone下来,也可以按右上角绿色的Code按钮来download zip,或是自己写一个。
你从bule_print-main进到blueprint_test并且看到了main.py,也执行了main.py。
你看见了写在main.py的根路由 return了什么:
接着你到达manu1,可以看到:
没错你只要要在其他的py档中这样写:
from flask import BlueprinttestRoute = Blueprint('testRoute', __name__)@testRoute.route('/manu1') # 路由拿掉刚才标上的生产def testroute(): return '<h1>You win!</h1>'
并且在主程式(目前是main.py)进行引用及注册:
from view.api import testRoute
app.register_blueprint(testRoute, url_prefix='')
你现在可以在好几个资料夹写好几个py档,而且你也可以依据他们的名称快速找到哪一个功能在那里。
至于要不要用url_prefix来让你该blue print都带有一样的前缀,这可以看个人喜好。
注意:
在写HTML的时候,假设用到了jinja及url_for并且前往其中一个blueprint的路由时。
请这样写:
<a href="{{ url_for('testRoute.testroute') }}">To manu1</a>
其中testRoute为该blueprint的变数名称,testroute为该Route的function名子。
我想第二天就先这样,晚上就看个世界大赛。