伸缩自如的Flask [day2] blue_print

开始之前,我相信你已经有碰过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了什麽:https://ithelp.ithome.com.tw/upload/images/20210508/20122678ESrPWWyGPw.png

接着你到达manu1,可以看到:
https://ithelp.ithome.com.tw/upload/images/20210508/20122678BIL8eg3dSb.png

没错你只要要在其他的py档中这样写:

from flask import Blueprint

testRoute = 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名子。
我想第二天就先这样,晚上就看个世界大赛。


<<:  使用 TorchServe 部署 Model

>>:  台湾需要1500位CISSP!

Day18 参加职训(机器学习与资料分析工程师培训班),Django

今日一样教学Django class registration_info(models.Model)...

使用者输入验证

允许使用者输入几乎是每个系统都需要的功能,为了确保资料内容或格式的正确性,通常会加上一些资料验证规则...

【Day 10】 讨论 Data Analytics Pipeline - Google Analytics on AWS (整体)

大家好~ 昨天我们已经成功拉取 Google Analytics 资料到 AWS,可是我们发现『抓取...

DAY 15 『 Realm 新增、修改、删除 』Part3

昨天分享如何新增、修改、删除、印出 Realm 资料库的资料,以及读取 Realm 资料库的资料去更...

Quartz.Net Job整合DI的生命周期问题

Quartz.Net 提供直接整合.Net Core DI的扩展,安装底下的套件即可 Install...