flask入门到起飞(十一)蓝图Blueprint使用

我们在这单个文件中可以定义路由、视图函数、定义模型等等。但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程序文件中,是非常不合适的。这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦。
为了解决后期的分包分模块问题,咱们就引入了蓝图,当然不使用蓝图也可以,本人觉得很畸形,如下:

# 文件app.py
from flask import Flask
# 导入admin中的内容
from admin import *
app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/list')
def list():
    return 'list'

@app.route('/detail')
def detail():
   #方式二:
    from admin import admin_home
    from admin import new
    from admin import edit
    return 'detail'

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

#方式一
#你会问为何要写在这下里面?循环引用包,必须延迟引用,可以大胆尝试一下
from admin import admin_home
from admin import new
from admin import edit
——————————————————————分界线——————————————————————————————
# 文件admin.py    
from app import app
@app.route('/')
def admin_home():
    return 'admin_home'

@app.route('/new')
def new():
    return 'new'

@app.route('/edit')
def edit():
    return 'edit'

什么是蓝图?

蓝图:用于实现单个应用的视图、模板、静态文件的集合。

蓝图就是模块化处理的类。

简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。

蓝图的使用:

一、创建蓝图对象。

#Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块
admin = Blueprint('admin',__name__)

二、注册蓝图路由。

@admin.route('/')
def admin_index():
    return 'admin_index'

三、在程序实例中注册该蓝图。

#url_prefix是指在定义视图函数url前面加上/admin才能访问该视图函数
app.register_blueprint(admin,url_prefix='/admin')

项目分包蓝图的使用

1.新建文件夹,并且设置为资源根目录
2.在文件夹里面新建init.py文件
3.初始化蓝图对象,并且在里面映入视图中的方法函数
4.在主函数app中注册蓝图即可

# coding:utf-8
from flask import Blueprint
#template_folder可以指定当前包下面的模版文件。里面还有定义静态文件存放地方的方法
#注意:当主app中资源文件和独立包中资源文件重复时,flask优先使用主app中的
app_cart = Blueprint("carts", __name__, template_folder="templates")
# 引入视图中定义的方法
import views

你可能感兴趣的:(flask入门到起飞(十一)蓝图Blueprint使用)