上篇文章里,我们对 Flask 进行了基础的了解,接下来我们将深入解析 FLask 框架的功能。
首先创建 Flask 项目,将项目自带的 app.py
文件改成运行文件,将其中的功能模块剥离出来。
from flask_script import Manager
from utils.app import create_app
app = create_app()
manager = Manager(app=app)
if __name__ == '__main__':
manager.run()
然后在工程目录创建配置文件夹 utils , 在 utils 下创建 __init__.py
、 app.py
文件,打开 app.py
输入代码如下:
import os
from flask import Flask
def create_app():
# 找到工程目录文件夹路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 配置模板文件夹路径
templates_dir = os.path.join(BASE_DIR, 'templates')
# 配置静态文件文件夹路径
static_dir = os.path.join(BASE_DIR, 'static')
# app是Flask的实例,它接收包或者模块的名字作为参数
app = Flask(__name__,
static_folder=static_dir,
template_folder=templates_dir)
# 返回app实例
return app
在工程目录下创建模块及路由文件夹 App , 创建文件 __init__.py
、models.py
、views.py
,打开文件 views.py
,输入代码如下:
from flask import Blueprint
student_blueprint = Blueprint('student', __name__)
@student_blueprint.route('/')
def index():
return 'Hello World!'
views.py 文件是视图文件, 在上面代码里我们导入了 Blueprint, Blueprint 通过把实现不同功能的module分开,从而把一个大的 application 分割成各自实现不同功能的 module 其本质上来说就是让程序更加松耦合,更加灵活,增加复用性,提高查错效率,降低出错概率。 所以我们可以创建多个视图文件,通过 Blueprint 创建多个视图对象。
打开 utils 下的 app.py
,注册蓝图:
import os
from flask import Flask
from App.views import student_blueprint
def create_app():
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
templates_dir = os.path.join(BASE_DIR, 'templates')
static_dir = os.path.join(BASE_DIR, 'static')
app = Flask(__name__,
static_folder=static_dir,
template_folder=templates_dir)
# 注册蓝图
app.register_blueprint(blueprint=student_blueprint, url_prefix='/student')
return app