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