(二)Flask-Blueprint 搭建工程

2018-06-26  本文已影响0人  零度心脉

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包

image.png
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
上一篇下一篇

猜你喜欢

热点阅读