Flask之蓝图的使用
蓝图,听起来就是一个很宏伟的东西
在Flask中的蓝图 blueprint 也是非常宏伟的
它的作用就是将 功能 与 主服务 分开怎么理解呢?
比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将查看客户,修改客户,添加客户,删除客户的四个功能做成蓝图加入到客户管理系统中
初始蓝图
蓝图其实就是将单个的功能放入一个文件中, 然后这个文件可被加载到flask程序中, 还可以理解成一个没有run方法的Flask对象,这个理论虽然有很多的漏洞,
但是我看到的的确就是这样
创建一个蓝图
创建一个目录用来存放蓝图, 下面是我的创建的目录, 这个目录下是负责做认证的, 有自己的template, 自己的static
manage负责启动一个flask程序, 所有的蓝图都注册到manage.py中
编写register.py实现的具体功能
from flask import Blueprint, render_template app = Blueprint("auth", __name__, template_folder="auth_templates",url_prefix="/user") @app.route('/register') def register(): return render_template("register.html")
实例化Blueprint时还有那些参数?
class Blueprint(_PackageBoundObject): def __init__(self, name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None):
有一部分参数适合Flask是一样的, 不一样的有以下几个
两个必须参数
name: 当前蓝图的名字
import_name: 当前模块
新增的参数
url_prefix: 前缀, 当前蓝图中的url在访问时都要加上这个前缀, 默认为空
manage.py中使用蓝图, 启动项目
from flask import Flask from app01 import register # 导入写好的蓝图 app = Flask(__name__) app.register_blueprint(register.app) # 注册蓝图 if __name__ == '__main__': app.run(debug=True)
访问测试
.
大功告成