赞
踩
falsk是个轻量级的框架,核心实现简单,但同事可以让开发人员自由的扩展功能。开发中,使用模块导入的方式。
flask中的蓝图不是可插入的应用程序,因为它实际上不是一个应用程序——它是一组可以在应用程序上注册的操作,甚至可以多次注册。
如果使用蓝图,那么应用会在 Flask 层中进行管理,共享配置,并且可以根据需要更改注册的应用程序对象。缺点是,一旦创建了一个应用程序,只有销毁整个应用对象才能注销蓝图。
蓝图的基本概念是:在蓝图被注册到应用之后,所要执行的操作的集合。当分配请求时,Flask 会把蓝图和视图函数关联起来,并生成两个端点之前的 URL 。
因为开发是以模块划分的,所以新增一个blog文件夹,在里边新建一个__init__.py
文件,源码如下:
from flask import Blueprint, jsonify
blog_base_blueprint = Blueprint('blog', __name__, url_prefix='/api')
# 获取所有博客文章列表
@blog_base_blueprint.route('/posts', methods=['GET'])
def get_posts():
return jsonify({
'code': 0,
'msg': 'success',
})
这里,构建了一个名为blog_base_blueprint 的蓝图,并使用@blog_base_blueprint绑定了一个函数,蓝图会记录下所登记的get_posts
函数。当以后在应用中注册蓝图时,这个函数会被注册到应用中。
个人觉着,蓝图就像php里的控制器+路由文件一起使用一样,在蓝图里,我们需要定义路由,以及方法。
这里可以参考文档哈,文档里很详细,本人用的就是普通的注册方式:
from project.blog import blog_base_blueprint
app.register_blueprint(blog_base_blueprint)
注意:注册蓝图时,注意导入的顺序,若是出现ImportError: cannot import name ‘db‘
之类的异常,请参考这里解决重复导入的异常
走到这里,我的源码如下:
import os from flask import Flask from flask_sqlalchemy import SQLAlchemy from project.config import config # 导入存储配置的字典 # 创建数据库连接 db = SQLAlchemy() from project.blog import blog_base_blueprint def create_app(config_name=None): if config_name is None: config_name = os.getenv('FLASK_ENV', 'development') # 从环境变量中获取FLASK_ENV,并设置默认值 app = Flask('project') # setup config,导入配置,根据配置环境实例化 app.config.from_object(config[config_name]) # 注册扩展 register_extension(app) # 注册蓝图 register_blueprint(app) return app # 注册flask拓展 def register_extension(app: Flask): db.init_app(app) # 注册蓝图 def register_blueprint(app: Flask): app.register_blueprint(blog_base_blueprint)
宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。