Flask-Blueprint用来布置项目工程 是一个非常好用的蓝图设计
开始先创建一个Hello World的工程 这个上一个记录已经阐述 这里就省略了
下来是我个人的布置工程目录,这个都是由个习惯进行的布置,多的不说截图后代码送上
image.png
在pyFirst根目录下再建一个python package "app"把static和templates都放到app包目录下
同时包下的init.py中代码设定:
from flask import Flask
app = Flask(__name__)
from app import views
app\views.py中代码:
from app import app
from app.login import login
app.register_blueprint(login, url_prefix='/login') #注册login
#首页显示
@app.route('/')
@app.route('/index')
def index():
return "Home Page"
好了首页已经设定好了,下来我们在app包中把项目管理项目已包的方式分开处理 这个我个人习惯的 我首先创建了一个login包
app\login_init_.py代码:
# coding:utf-8
from flask import Blueprint
login = Blueprint('login', __name__,)
from app.login import views
在这里就用到了我说的Blueprint来布置处理的问题了
Blueprint其实本身只是对view上的接口进行了注册,然后整体挂载在app上,Blueprint本身的目的就是组织多模块的平行共存,避免直接在app上注册view,其实更多的只是方便开发和代码的维护,因为最终所有的views上的接口都仍然是直接挂载在app上,其实对应整个应用来说,没有什么明显的区别。
Flask 中的Blueprint不是一个可插拨的应用,因为它不是一个真正的应用,而是一套可以注册 在应用中的操作,并且可以注册多次。
同时在这里,我们不能使用多个flask对象来管理和注册,因为这样会导致每个flask对象都有一个自己的配置,不好管理。
使用Blueprint,应用会在Flask层中进行管理,共享配置,通过注册按需改变应用 对象。Blueprint的缺点是一旦应用被创建后,只有销毁整个应用对象才能注销lueprint。
综合以上,简单来说,Blueprint就是通过url找到view的一套机制,并没有太过于复杂的逻辑。
多的不说...来看login\views.py代码:
# coding: utf-8
from app.login import login
import json
user_data = [
{
'id': 1,
'name': '张三',
'age': 23
},
{
'id': 2,
'name': '李四',
'age': 24
}
]
@login.route('/index', methods=['GET', ])
def index():
data = {
'status': 'success',
'users': user_data
}
return json.dumps(data, ensure_ascii=False, indent=1)
最终效果:
image.png
image.png
网友评论