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)

 

访问测试

 

.

 

大功告成

posted @ 2018-07-19 21:59  王剑威  阅读(327)  评论(0编辑  收藏  举报