公众号:uncle39py

V1

2022/02/08阅读:71主题:默认主题

flask蓝图

蓝图是什么?

蓝图是一个个小的模块的划分;比如整个工程有用户模块,订单模块,采购模块,库存模块;

Flask中的蓝图对标的是Django中的一个个app;

Flask中的app对标的是Django中的整个工程;

app对应的是整个大一统的帝国, app管辖下的蓝图对应的是帝国下的一个个总督;在这样一个小范围内,每一个蓝图自成体系;

以文件的方式定义蓝图

第一步:定义蓝图

蓝图是app的代理人,所以蓝图的使用方式与app一样,以下代码文件名为:goods.py,

from flask import Blueprint

# 创建一个蓝图对象;
app_goods = Blueprint('app_goods',__name__)
# app_goods是蓝图名字;

@app_goods.route('/get_goods')
def get_goods():
    return 'get goods page'

第二步:注册蓝图(让蓝图来中央述职,中央授权的蓝图才是有实权的蓝图)

from flask import Flask
from goods import app_goods

app = Flask(__name__)
app.register_blueprint(app_goods,url_prefix='/goods'
#注册蓝图; 
#url_prefix='/goods'是url前缀

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

以目录的方式定义蓝图

目录结构如下:

tp

创建一个对象的时候,会自动调用__init__()方法;导入包的时候,会自动执行包下面的__init__.py文件

第一步:我们把蓝图对象定义在包下的__init__.py中

from flask import Blueprint

app_order = Blueprint('app_order',__name__,template_folder='template',static_folder='static')
# __name__代表当前模块所在目录为蓝图的势力范围,
#以此目录下的static作为静态文件目录,template作为模板目录(需要用两个参数显示指定,不是默认)
#app的模板目录优先级比蓝图的模板目录高,会先从app的模板目录中去找html模板,找不到再去蓝图的模板目录中寻找;静态目录同理

from .view import get_orders #(第四步)
#如果没有这一步的话,蓝图是注册到app了,但是整段代码,包括蓝图都不知道视图函数get_orders()的存在;
#需要在最后导入一下所有的视图函数,把视图函数加载进来 

第二步:视图函数view.py

from . import app_order
from flask import render_template

@app_order.route('/get_orders')
def get_orders():
    return render_template('order.html')

第三步:注册蓝图

from flask import Flask
from order import app_order

app = Flask(__name__)
app.register_blueprint(app_order)

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

分类:

后端

标签:

Python

作者介绍

公众号:uncle39py
V1