Python之Flask Blueprint(蓝本)

这篇具有很好参考价值的文章主要介绍了Python之Flask Blueprint(蓝本)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

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

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

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

二、实例讲解

下面以实际项目开发为例,项目结构图如下图所示:
Python之Flask Blueprint(蓝本)

2.1 蓝本创建

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

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

from flask import Blueprint

auth = Blueprint('auth', __name__)

from . import forms, views

上面的蓝本创建语句创建了名为“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']

在这里使用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

在蓝本注册函数register_blueprint()中,第一个参数为所注册的蓝本名称。当我们在应用对象上注册一个蓝图时,需要指定一个url_prefix关键字 参数(这个参数默认是/)。其余可增参数详见Flask官方文档。文章来源地址https://www.toymoban.com/news/detail-497327.html

参考资料

  • Python进阶(四十九)初识Flask Blueprint:https://blog.csdn.net/sunhuaqiang1/article/details/72803336

到了这里,关于Python之Flask Blueprint(蓝本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask-sqlalchemy结合Blueprint遇到循环引入问题的解决方案

    想要用flask_sqlalchemy结合Blueprint分模块写一下SQL的增删改查接口,结果发现有循环引入问题。 一开始,我在app.py中使用db = SQLAlchemy(app)创建数据库对象;并且使用app.register_blueprint(db_bp, url_prefix=\\\'/db\\\')注册蓝图。 这使得我的依赖关系是这样的。db.py → app,py 中的db对象;app.py →

    2024年02月07日
    浏览(42)
  • Python使用flask框架与前端建立websocket链接,并进行数据交互

    后端采用的框架为flask,前端用的flask自带的html编写,实现的功能为:前后端建立websocket链接并进行数据交互 一、编写一个flask后端服务 常规创建方式就可以,创建一个flask服务。声明一个websocket实例,以websocket的方式启动这个服务。 安装相关依赖: 声明应用和websocket实例

    2024年04月11日
    浏览(46)
  • tinymce6插件开发(版本涉及4.x\5.x\6.x\7.x,案例以Element-UI中开发为蓝本)

    网上大部分涉及tinymce插件开发的文章以4.x和5.x版本为主,而目前最新的6.x版很多老插件都无法正常加载或运行了。 本开发流程以一个包含checkbox组件的弹窗为例: 创建插件文件夹,例如 myplugin ,文件夹中创建三个文件: index.js 用于引导; plugin.js 开发主文件; plugin.min.js 已

    2024年02月05日
    浏览(32)
  • Python - flask后端开发笔记

    ​ Flask入门 有一篇很全面的博客可以参考:Python Flask Web 框架入门 跨域问题处理 文件发送 ​

    2024年02月07日
    浏览(66)
  • Python Web 开发 Flask 介绍

    WEB开发是现在程序必会的技能,因为大部分软件都以Web形式提供,及时制作后台开发,或者只做前台开发,也需要了解Web开发的概念和特点。由于Python是解释性脚本语言,用来做Web开发非常适合,而且Python有上百种Web开发框架,以及成熟的模板技术,使得Web开发如虎添翼。今

    2024年02月14日
    浏览(41)
  • Python Web 开发之 Flask 入门实践

    导语:Flask 是一个轻量级的 Python Web 框架,广受开发者喜爱。本文将带领大家了解 Flask 的基本概念、搭建一个简单的 Web 项目以及如何进一步扩展功能。 Flask 是一个基于 Werkzeug 和 Jinja2 的微型 Web 框架,它的特点是轻量、易学习、可扩展。使用 Flask,我们可以快速构建 Web 应

    2024年01月22日
    浏览(61)
  • 【Python开发】一文详解Flask-Login

    Flask-Login 为 Flask 提供用户会话管理。它处理登录、注销和长时间记住用户会话等常见任务。 Flask-Login 不绑定到任何特定的数据库系统或权限模型。唯一的要求是您的 用户对象实现一些方法 ,并且您向能够 从用户 ID 加载用户 的扩展提供回调。 GitHub:https://github.com/maxcountr

    2023年04月12日
    浏览(37)
  • 【python】Flask网页开发——论坛项目实战(完整代码)

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【论坛项目实战】 【python】Flask网页开发——论坛项目实战(完整代码) 【python】Flask网页开发——论坛项目实战(1.导航条实现) 【python】Flask网页开发——论坛项目实战(2.登录与注册) 【python】Flask网页开发——论

    2024年04月28日
    浏览(46)
  • Python Web开发:Django与Flask框架

    Django和Flask都是Python中非常受欢迎的Web开发框架。虽然它们都是用于构建Web应用程序的工具,但它们在设计理念、使用方式和适用场景等方面存在一些差异。 Django Django是一个“大而全”的框架,遵循MVC设计模式。它内置了很多功能,如ORM(对象关系映射)、模板引擎、表单处

    2024年02月22日
    浏览(53)
  • Python Flask框架-开发简单博客-项目布局、应用设置

    作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,只在于他所拥有的。所以可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的专栏文章知识点全面细致,逻辑清晰、结合实战,让你在学习路

    2024年02月02日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包