深入了解Python Flask框架之蓝图

 更新时间:2021年12月10日 17:25:13   作者:霖hero  
这篇文章主要为大家介绍了Python Flask框架之蓝图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

随着Flask项目越来越复杂,把所有视图函数放在一个应用文件中会很不方便我们管理,所以需要对程序进行模块化的处理。Flask内置了一个模块化处理的类——Blueprint蓝图。

Blueprint 是一种组织一组相关视图及其他代码的方式。与把视图及其他代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后在工厂函数中把蓝图注册到应用。

简单来说就把app应用分为很多个小模块,把这些小模块放在一个包里,这个包叫做蓝图,如下图所示:

项目目录如下图所示:

这里创建了一个名为apps的包,我们这个包称为蓝图,在这个包中,我们又创建了三个包,那么我们如何把蓝图与app.py联系起来呢。这时我们就要通过init.py初始化文件来把蓝图与app.py。

首先我们在user包中创建一个视图函数文件名为view,代码如下所示:

from flask import Blueprint
user_bp= Blueprint('user',__name__)

首先导入Blueprint包,再通过Blueprint()方法来定义变量user_bp为蓝图对象。

init.py初始化文件代码如下所示:

from flask import Flask
from apps.user.view import user_bp
​
def create_app(): 
    app=Flask(__name__,template_folder='../templates',static_folder='../static')
​
    #蓝图
    app.register_blueprint(user_bp) 
    return app

首先我们导入user中的view对象user_bp,自定义函数create_app()并创建一个app对象,然后通过app.register_blueprint()方法将蓝图对象绑定在app对象上。

注意:由于init.py初始化文件与static静态文件、templates模板文件不在同一级,所以需要重新指定静态文件与模板文件的位置。

接下来编写app.py启动文件,代码如下所示:

from flask import Flask
from apps.user.view import user_bp
​
def create_app(): 
    app=Flask(__name__,template_folder='../templates',static_folder='../static')
​
    #蓝图
    app.register_blueprint(user_bp) 
    return app

代码很简单,直接导入view文件中的create_app并调用create_app()。

这样app.py文件就和蓝图包联系起来了。

注意:上面的文件名、蓝图名、视图函数名都可以是任意的。

那么我们蓝图的视图函数有什么变化呢?

以上面的view视图函数文件为例,其代码内容如下所示:

from flask import Blueprint, request, render_template, redirect
from apps.user.model import User
 
user_bp= Blueprint('user',__name__)        #蓝图对象
 
@user_bp.route('/')
def hello():
    return '你好'

与之前的在app.py中写视图函数将比,将之前的@app.route()改为蓝图对象名.route(),其他的就几乎一样。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • python中的global关键字的使用方法

    python中的global关键字的使用方法

    这篇文章主要介绍了python中的global关键字的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python利用字典破解WIFI密码的方法

    Python利用字典破解WIFI密码的方法

    今天小编就为大家分享一篇关于Python利用字典破解WIFI密码的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • yolov5中head修改为decouple head详解

    yolov5中head修改为decouple head详解

    现成的YOLOv5代码真的很香,不管口碑怎么样,我用着反正是挺爽的,下面这篇文章主要给大家介绍了关于yolov5中head修改为decouple head的相关资料,需要的朋友可以参考下
    2022-06-06
  • 聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明

    聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明

    这篇文章主要介绍了聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python检查端口是否打开的七种方法总结

    Python检查端口是否打开的七种方法总结

    在信息安全领域,端口扫描是一项常见的技术,用于逐个检测目标主机上的端口是否开放,这篇文章主要给大家介绍了关于Python检查端口是否打开的七种方法总结,需要的朋友可以参考下
    2023-12-12
  • Django使用HttpResponse返回图片并显示的方法

    Django使用HttpResponse返回图片并显示的方法

    今天小编就为大家分享一篇Django使用HttpResponse返回图片并显示的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • tensorflow saver 保存和恢复指定 tensor的实例讲解

    tensorflow saver 保存和恢复指定 tensor的实例讲解

    今天小编就为大家分享一篇tensorflow saver 保存和恢复指定 tensor的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 基于Flask+websocket实现一个在线聊天室

    基于Flask+websocket实现一个在线聊天室

    在今天的互联网时代,实时通信成为了许多应用和服务的核心特色,在本文中,我们将介绍如何使用 Flask 和 Websockets 通过 Flask-SocketIO 框架创建一个简单的在线聊天室,感兴趣的可以跟随小编一起了解下
    2023-09-09
  • python爬虫指南之xpath实例解析(附实战)

    python爬虫指南之xpath实例解析(附实战)

    在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块,下面这篇文章主要给大家介绍了关于python爬虫指南之xpath实例解析的相关资料,需要的朋友可以参考下
    2022-01-01
  • Python+PyQt5实现自动化任务管理

    Python+PyQt5实现自动化任务管理

    这篇文章主要为大家详细介绍了如何通过PyQt5构建图形界面,使用Python实现了一个自动化任务管理系统,感兴趣的小伙伴可以参考一下
    2025-04-04

最新评论