当前位置: 首页 > news >正文

Flask python 开发篇:蓝图的使用

蓝图

      • 引言
      • 一、为什么使用蓝图?
      • 二、蓝图的概念
      • 三、创建蓝图
      • 四、注册蓝图
      • 五、分享我的creat_app方法
      • 六、写在最后

引言

falsk是个轻量级的框架,核心实现简单,但同事可以让开发人员自由的扩展功能。开发中,使用模块导入的方式。

一、为什么使用蓝图?

  • 将一个应用程序分解为一组蓝图。这对于较大的应用程序是理想的;一个项目可以实例化一个应用程序对象,初始化多个扩展,并注册许多蓝图。
  • -在URL前缀和(或)子域的应用程序上注册蓝图。URL前缀和(或)子域中的参数成为蓝图中所有视图函数的通用视图参数(缺省情况下)。
  • 在具有不同URL规则的应用程序上多次注册蓝图。
  • 通过蓝图提供模板过滤器、静态文件、模板和其他实用程序。蓝图不必执行应用或视图函数。
  • 当初始化一个Flask 扩展时,为以上任意一种用途注册一个蓝图。

flask中的蓝图不是可插入的应用程序,因为它实际上不是一个应用程序——它是一组可以在应用程序上注册的操作,甚至可以多次注册。

如果使用蓝图,那么应用会在 Flask 层中进行管理,共享配置,并且可以根据需要更改注册的应用程序对象。缺点是,一旦创建了一个应用程序,只有销毁整个应用对象才能注销蓝图。

二、蓝图的概念

蓝图的基本概念是:在蓝图被注册到应用之后,所要执行的操作的集合。当分配请求时,Flask 会把蓝图和视图函数关联起来,并生成两个端点之前的 URL 。

三、创建蓝图

因为开发是以模块划分的,所以新增一个blog文件夹,在里边新建一个__init__.py文件,源码如下:

from flask import Blueprint, jsonifyblog_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_blueprintapp.register_blueprint(blog_base_blueprint)

注意:注册蓝图时,注意导入的顺序,若是出现ImportError: cannot import name ‘db‘之类的异常,请参考这里解决重复导入的异常

五、分享我的creat_app方法

走到这里,我的源码如下:

import osfrom flask import Flask
from flask_sqlalchemy import SQLAlchemy
from project.config import config  # 导入存储配置的字典# 创建数据库连接
db = SQLAlchemy()from project.blog import blog_base_blueprintdef 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)

六、写在最后

宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)
在这里插入图片描述

http://www.lryc.cn/news/324971.html

相关文章:

  • 抖音视频爬虫下载软件|可导出视频分享链接|视频批量采集工具
  • CentOS DHCP服务器部署指南
  • llvm后端
  • 【JSON2WEB】10 基于 Amis 做个登录页面login.html
  • Android 你遇到的无障碍onGesture不执行
  • Java学习10
  • 第二十章 TypeScript(webpack构建ts+vue3项目)
  • 白酒:陈酿过程中的老熟度评价与品质提升方法
  • BoostSeacher
  • 我的算法刷题笔记(3.18-3.22)
  • 初探Ruby编程语言
  • 深圳MES系统如何提高生产效率
  • QT常见Layout布局器使用
  • Elasticsearch8 - Docker安装Elasticsearch8.12.2
  • 还在为不知道怎么学习网络安全而烦恼吗?这篇文带你从入门级开始学习网络安全—认识网络安全
  • DFS基础——迷宫
  • iOS开发进阶(九):OC混合开发嵌套H5应用并互相通信
  • 新人应该从哪几个方面掌握大数据测试?
  • linux debian运行pip报错ssl tsl module in Python is not available
  • 宝塔设置限制ip后,ip改了之后 ,登陆不上了
  • 解锁新功能,Dynadot现支持BITPAY平台虚拟货币
  • Android下的Touch事件分发详解
  • uniapp的配置文件、入口文件、主组件、页面管理部分
  • B端设计:如何让UI组件库成为助力,而不是阻力。
  • 敏捷开发最佳实践:学习与改进维度实践案例之会诊式培养敏捷教练
  • C#宿舍信息管理系统
  • 测试环境搭建整套大数据系统(十三:设置开机自启动)
  • 算法练习第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
  • nodejs+vue反诈科普平台的设计与实现pythonflask-django-php
  • SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)