当前位置:   article > 正文

Python之Flask Blueprint(蓝本)_python blueprint

python blueprint

一、前言

在进行Python Web开发时选择Flask框架。项目模块划分阶段,使用Blueprint(这里暂且称之为“蓝本”)。Blueprint通过把实现不同功能的module分开,从而把一个大的application分割成各自实现不同功能的module。在一个Blueprint中可以调用另一个blueprint的view function, 但要加相应的blueprint名。

Blueprint还有其他好处,其本质上来说就是让程序更加松耦合,更加灵活,增加复用性,提高查错效率,降低出错概率。

在具体项目开发过程中,不同蓝本分别对应不同的功能模块。例如:授权模块auth和项目主模块main

二、实例讲解

下面以实际项目开发为例,项目结构图如下图所示:
在这里插入图片描述

2.1 蓝本创建

不同蓝本分别位于不同的Python包中,而蓝图的创建则位于Python包下的__init__.py文件。不同Python包下的views.py文件则对应不同蓝本下的路由。

在示例项目中,auth授权包下的蓝本创建代码如下:

from flask import Blueprint

auth = Blueprint('auth', __name__)

from . import forms, views
  • 1
  • 2
  • 3
  • 4
  • 5

上面的蓝本创建语句创建了名为“auth”的蓝本。之所以将from . import forms, views导包语句置于__init__.py末尾,是为了避免循环导入依赖,因为在views.py中还要导入蓝本auth。

2.2 导入蓝本

Views.py文件内容如下:

from flask import request, flash, render_template, redirect, url_for
from . import auth
from web_flask.app.dal_pymysql import DataManager

# 管理员登录
@auth.route('/login', methods=['POST'])
def login():
    form = request.form
    # 由于request中的form参数以字典的形式存在,故以下语句等价
    uname = request.form['username']
    pwd = request.form['password']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里使用from . import auth方式导入所需蓝本。

2.3 蓝本注册

蓝本的注册语句则置于项目创建的工厂方法中,注册代码如下:

from .auth import auth as auth_blueprint
from .main import main as main_blueprint
# 注册蓝本 url_prefix='/admin'
app.register_blueprint(auth_blueprint,)
app.register_blueprint(main_blueprint, static_folder='static')
return app
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在蓝本注册函数register_blueprint()中,第一个参数为所注册的蓝本名称。当我们在应用对象上注册一个蓝图时,需要指定一个url_prefix关键字 参数(这个参数默认是/)。其余可增参数详见Flask官方文档。

参考资料

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/587068
推荐阅读
相关标签
  

闽ICP备14008679号