Flask蓝图的基本使用

蓝图定义:
简单来说:Blueprint是一个存储视图方法的容器,这些操作在这个Blueprint被注册到一个应用后就可以被调用,Flask可以通过Blueprint来组织URL以及处理请求
Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:

  1. 一个项目可以具有多个Blueprint
  2. 可以将一个Blueprint注册到任何一个未使用的url下比如“/”,“/sample"或者子域名
  3. 在一个应用中,一个模块可以注册多次
  4. Blueprint可以单独具有自己的模块,静态文件或者其他的通用操作方法,它并不是必须要实现应用的视图和函数的
  5. 在一个应用初始化时,就应该要注册Blueprint,但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。

Blueprint 对象用起来和一个应用/Flask对象差不多,最大的区别在于一个蓝图对象没有办法独立运行,必须将它注册到一个应用对象上才能生效

使用蓝图可以分为四个步骤:

  1. 创建一个蓝图包,例如home,并在__init__.py 文件中创建蓝图对象
from flask import Blueprint
home = Blueprint('home', __name__)
  1. 在这个蓝图目录下,创建views.py文件 保存当前蓝图使用的视图函数
def index():
    return "ok"
  1. 在home/init.py中引入views,py中所有的视图函数和给视图配置路由
from flask import Blueprint:
home_blu = Blueprint('home', __name__)

from . import views
home_blu.add_url_rule("/index",endpoint="index", view_func = views,index) # 子路由
  1. 在主程序run.py文件中的app对象上注册这个home蓝图对象
# 注册蓝图
from home import home_blu
app.register_blueprint(home_blu, url=prefix='/home') # url_prefix='' 总路由

当这个应用启动后通过http://127.0.0.1:5000/home/index可以访问到蓝图中定义的视图函数

法一:
在这里插入图片描述
在一个flask总目录下建立一个名为home的pyhton 包
包含 init.py views.py main.py 三个文件

init_.py文件中

# 1.蓝图对象的初始化
from flask import Blueprint
home_blu = Blueprint("home", __name__)  # 初始化一般 目录名_blue =Blueprint("(这个地方目录叫什么就写个什么名字进去", __name)
# 2.在蓝图目录下创建views.py视图文件,编写对应的视图函数/视图类

# 3.注册视图和路由到蓝图中
from .  import views

# 在flask主文件main.py中通过app对象注册蓝图对象

在views.py文件中

from . import home_blu   # 当前目录下把home_blu拿过来

@home_blu.route("/index")   # 定义一个蓝对象
def index():
    return "home/index"

在main.py文件中

from flask import Flask
app = Flask(__name__)
from home import home_blu

app.register_blueprint(home_blu, url_prefix="/")  # url_prefix ='' 总路由 写了可以和@home_blu.route("/index") 这里拼接上,不写也没关系

if __name__ == '__main__':
    app.run()

在浏览器中输入http://127.0.0.1:5000/index
显示:
在这里插入图片描述
法二:
在views.py中
注: 在这里前面不需要加

from . import home_blu

在views.py中

def index():
    return "home/index 2"

在__init__.py中

# 1.蓝图对象的初始化
from flask import Blueprint
home_blu = Blueprint("home", __name__)  # 初始化一般 目录名_blue =Blueprint("(这个地方目录叫什么就写个什么名字进去", __name)
# 2.在蓝图目录下创建views.py视图文件,编写对应的视图函数/视图类

# 3.注册视图和路由到蓝图中
from . import views
home_blu.add_url_rule("/index", view_func=views.index)   # 这种方法通过views引入index就可以了
# 在flask主文件main.py中通过app对象注册蓝图对象

在main.py中

from flask import Flask
app = Flask(__name__)
from home import home_blu

app.register_blueprint(home_blu, url_prefix="/")  # url_prefix ='' 总路由 写了可以和@home_blu.route("/index") 这里拼接上,不写也没关系

if __name__ == '__main__':
    app.run()

浏览器输入http://127.0.0.1:5000/index 得到
在这里插入图片描述
在main.py 中url_prefix蓝图的路由前缀,类似之前的django的子应用路由前缀

app.register_blueprint(home_blu, url_prefix="/")

把上面那段代码改成

app.register_blueprint(home_blu, url_prefix="/home") 

要输入 http://127.0.0.1:5000/home/index 才会有内容显示
在这里插入图片描述
输入之前的http://27.0.0.1:5000/index 浏览器页面显示Not Found

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值