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

Flask入门(9):蓝图

目录

  • 9.蓝图
    • 9.1 概述
    • 9.2 蓝图项目结构
      • 结构1
      • 结构2
    • 9.3 添加前缀
    • 9.4 静态文件
    • 9.5 模板
    • 9.6 构建 URLs

9.蓝图

参考:http://www.pythondoc.com/flask/blueprints.html

9.1 概述

Flask 使用了 蓝图 的概念在一个应用或者跨应用中构建应用组件以及支持通用模式。 蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。 一个 Blueprint 对象与 Flask 应用对象的工作方式很像,但它确实不是一个应用, 而是一个描述如何构建或扩展应用的 蓝图

蓝图的作用:

  • 把一个应用分解成一系列的蓝图。对于大型的应用是理想化的;一个项目能实例化一个应用, 初始化一些扩展,以及注册一系列的蓝图。
  • 以一个 URL 前缀和/或子域在一个应用上注册蓝图。 URL 前缀/子域名中的参数即成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)。
  • 在一个应用中用不同的 URL 规则多次注册一个蓝图。
  • 通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应用或视图函数。
  • 初始化一个 Flask 扩展时,在这些情况中注册蓝图。

9.2 蓝图项目结构

结构1

一般大小的项目使用此如下结构即可:

flaskBluePrint01  项目
-app1  程序子应用-static  静态文件-templates  模板文件-views  视图模块-account.py  视图文件-admin.py-user.py- __init__.py  初始化文件:注册应用,实例化对象,使用蓝图
-manage.py  项目启动文件

步骤如下:

1.创建app

app1/ __ init _ _.py

from flask import Flaskapp = Flask(__name__)

2.创建启动文件

manage.py

from app1 import appif __name__ == '__main__':app.run()

3.创建子视图

app1/views/ account.py

from flask import Blueprintac = Blueprint('ac', __name__)@ac.route('/login')
def login():return 'login'@ac.route('/logout')
def logout():return 'logout'

app1/views/admin.py

from flask import Blueprintad = Blueprint('ad', __name__)@ad.route('/home')
def home():return 'home'

app1/views/ user.py

from flask import Blueprintus = Blueprint('us', __name__)@us.route('/info')
def info():return 'info'

4.注册蓝图
app/ __ init _ _.py

from flask import Flaskapp = Flask(__name__)from .views import account
from .views import admin
from .views import userapp.register_blueprint(account.ac)
app.register_blueprint(admin.ad)
app.register_blueprint(user.us)

结构2

对于一些大型项目可以使用以下数据结构

在这里插入图片描述

注:

1.如果在 templates 中存在和 templates_users 有同名模板文件时, 则系统会优先使用 templates 中的文件 ;

2.如果是前后端分离项目,则不需要static和templates静态文件夹。

使用步骤如下:

1.创建app

app/ __ init _ _.py

from flask import Flaskapp = Flask(__name__)

2.创建启动文件

manage.py

from app1 import appif __name__ == '__main__':app.run()

3.创建子视图子应用和子视图

app1/admin/_ _ init_ _.py

from flask import Blueprintad=Blueprint('ad', __name__)from . import views

app1/admin/views.py

from . import ad@ad.route('/home')
def home():return 'home'

app1/web/_ _ init_ _.py

from flask import Blueprintwb=Blueprint('wb', __name__)from .views import *

app1/web/views.py

from . import wb@wb.route('/login')
def login():return 'login'@wb.route('/logout')
def logout():return 'logout'

4.注册蓝图

app/ __ init _ _.py

from flask import Flaskapp = Flask(__name__)
app.debug=Truefrom .admin import ad
from .web import wbapp.register_blueprint(ad)
app.register_blueprint(wb)

9.3 添加前缀

如下,修改app1|views| admin.py文件

from flask import Blueprintad = Blueprint('ad', __name__, url_prefix='/admin')@ad.route('/home')
def home():return 'home'

也可以在注册时候添加,如下:

from flask import Flaskapp = Flask(__name__)from .views import account
from .views import admin
from .views import userapp.register_blueprint(account.ac)
app.register_blueprint(admin.ad, url_prefix="/admin")
app.register_blueprint(user.us)

9.4 静态文件

一个蓝图可以通过 static_folder 关键字参数提供一个指向文件系统上文件夹的路 径,来公开一个带有静态文件的文件夹。这可以是一个绝对路径,也可以是相对于蓝图文件夹的路径:

ad=Blueprint('ad', __name__, static_folder='static_admin')

9.5 模板

指定蓝图使用的模板文件夹:

ad=Blueprint('ad', __name__, static_folder='static_admin', template_folder='templates_admin')

9.6 构建 URLs

当你想要从一个页面链接到另一个页面,你可以像通常一个样使用 url_for() 函数,只是你要在 URL 的末端加上蓝图的名称和一个点(.)作为前缀:

url_for('admin.index')

此外,如果你在一个蓝图的视图函数或是模板中想要从链接到同一蓝图下另一个端点, 你可以通过对端点的只加上一个点作为前缀来使用相对的重定向:

url_for('.index')

相关文章:

Flask入门(9):蓝图

目录9.蓝图9.1 概述9.2 蓝图项目结构结构1结构29.3 添加前缀9.4 静态文件9.5 模板9.6 构建 URLs9.蓝图 参考:http://www.pythondoc.com/flask/blueprints.html 9.1 概述 Flask 使用了 蓝图 的概念在一个应用或者跨应用中构建应用组件以及支持通用模式。 蓝图很好…...

跑步戴哪种耳机好,最适合运动跑步的蓝牙耳机

经常跑步使用的耳机,还是要选择佩戴着舒适以及牢固的运动耳机最为合适,在运动当中会遇到耳机掉落或者长时间佩戴耳道感到难受的现象发生,那么什么蓝牙耳机是最适合运动当中佩戴呢?下面这些耳机分享希望能够帮助大家。 1、南卡Run…...

微信小程序实现瀑布流布局

微信小程序实现瀑布流布局1、简单实例,纯图片后台返回图片高度https://blog.csdn.net/qq_45967222/article/details/1190318762、纯图片后台返回图片高度、通过wx.getImageInfo获取在线图片高度、按照奇数偶数来显示https://blog.csdn.net/baidu_35290582/article/d…...

2023最新网络工程师HCIA-Datacom“1000”道题库,光速刷题拿证

HCIA认证是华为认证体系的初级认证,可以说是网工进入IT行业的一张从业资格证! HCIA-Datacom考试覆盖数通基础知识 包括 TCP/IP 协议栈基础知识,OSPF 路由协议基本原理以及在华为路由器中的配置实现,以太网技术、生成树、VLAN 原…...

[蓝桥杯] 递归与递推习题训练

文章目录 一、递归实现指数型枚举 1、1 题目描述 1、2 题解关键思路与解答 二、递归实现排列型枚举 2、1 题目描述 2、2 题解关键思路与解答 三、递归实现组合型枚举 3、1 题目描述 3、2 题解关键思路与解答 四、带分数 4、1 题目描述 4、2 题解关键思路与解答 五、费解的开关…...

领航智能汽车信息安全新征程 | 云驰未来乔迁新址

2月20日,在北京朝阳百子湾东朝时代创意园,云驰未来迎来乔迁之喜,智能汽车和自动驾驶领域的行业领导、合作伙伴与客户、投资人及媒体嘉宾齐聚现场,共同见证云驰未来迈上新的发展征程。 作为中国智能网联汽车和自动驾驶信息安全行业…...

Kaldi语音识别技术(七) ----- 训练GMM

Kaldi语音识别技术(七) ----- GMM 文章目录Kaldi语音识别技术(七) ----- GMM训练GMMtrain_mono.sh 用于训练GMM训练GMM—生成文件训练GMM—final模型查看训练GMM—final.occs查看训练GMM—对齐信息查看训练GMM—fsts.*.gz查看训练GMM—tree决策树查看align_si.sh 用于对齐训练G…...

Java 集合基础

文章目录一、集合概念二、ArrayList1. 构造方法和添加方法2. 常用方法三、案例演示1. 存储字符串并遍历2. 存储学生对象并遍历3. 键盘录入学生对象并遍历一、集合概念 编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需要&a…...

Day896.MySql的kill命令 -MySQL实战

MySql的kill命令 Hi,我是阿昌,今天学习记录的是关于MySql的kill命令的内容。 在 MySQL 中有两个 kill 命令: 一个是 kill query 线程 id,表示终止这个线程中正在执行的语句;一个是 kill connection 线程 id&#…...

L2-010 排座位

布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式&#xff1…...

C++的完美讲解,还不快来看看?

目录 简介: 创建C程序: Windows编译简介: Hello,C World! 简介: C融合了3中不同的编程传统:C语言代表的过程性传统、C在C语言基础上添加的类代表的面向对象语言的传统以及C模板支持的通用编程传统。一般来说,计算机语言…...

C语言学习_DAY_5_循环结构while和for语句【C语言学习笔记】

高质量博主,点个关注不迷路🌸🌸🌸! 目录 I. 案例引入 II. while语句 III. do while语句 IV. for语句 前言: 书接上回,判断结构已经解决,接下来是另一种很重要的结构:循环结构的实…...

JavaScript高级程序设计读书分享之4章——4.3垃圾回收

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 4.3.3 性能 垃圾回收程序会周期性运行,如果内存中分配了很多变量,则可能造成性能损失,因此垃圾回收的 时间调度很重要。尤其是在内存有限的移动设备上,垃圾…...

Java线程的6 种状态

Java 线程的状态 Java线程有六种状态: 初始(NEW)、运行(RUNNABLE)、阻塞(BLOCKED)、 等待(WAITING)、超时等待(TIMED_WAITING)、终止&#xff08…...

5年测试在职经验之谈:3年手工测试、2年的自动化测试,从入门到不可自拔...

毕业3年了,学的是环境工程专业,毕业后零基础转行做软件测试。 已近从事测试行业8年了,自己也从事过3年的手工测试,从事期间越来越觉得如果一直在手工测试的道路上前进,并不会有很大的发展,所以通过自己的努…...

QHash-官翻

QHash 类 template <typename Key, typename T> class QHash QHash 类是一种模板类&#xff0c;提供基于哈希表的字典类结构。更多内容… 头文件:#include <QHash>qmake:QT core派生类:QMultiHash 所有成员列表&#xff0c;包括继承的成员废弃的成员 注意&…...

MYSQL 配置优化

max_connections 允许客户端并发连接的最大数量&#xff0c;默认值是151。 show status like %connections%; 设置参数值应大于Max_used_connections。如果使用连接池&#xff0c;可参考连接池的最大连接数和每个连接池的数量作为参考设置 innodb_buffe_pool_instances Inno…...

多 态

1多态的基本概念多态是C面向对象三大特性之一多态分为两类静态多态: 函数重载和运算符重载属于静态多态&#xff0c;复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定–--编译阶段确定函数地址动态多态的函数地址晚绑定–--运…...

Java集合

集合、数组都是对多个数据进行存储操作的结构&#xff0c;简称java容器 &#xff08;此时的存储&#xff0c;主要指的是内存层面的存储&#xff0c;不涉及持久化的存储&#xff09; 数组存储的特点&#xff1a; 一旦初始化&#xff0c;其长度就确定了。数组一旦定义好&#x…...

高校借力泛微,搭建一体化、流程化的​内控管理平台

财政部《行政事业单位内部控制规范&#xff08;试行&#xff09;》中明确规定&#xff1a;行政事业单位内部控制是指通过制定制度、实施措施和执行程序&#xff0c;实现对行政事业单位经济活动风险的防范和管控&#xff0c;包括对其预算管理、收支管理、采购管理、资产管理、建…...

告别重复造轮子:用快马AI一键生成高复用性imToken集成代码模块

告别重复造轮子&#xff1a;用快马AI一键生成高复用性imToken集成代码模块 开发涉及钱包集成的DApp时&#xff0c;最让人头疼的就是那些重复性的基础代码。每次新项目都要重新写一遍连接钱包、处理授权、监听网络切换的逻辑&#xff0c;不仅浪费时间&#xff0c;还容易引入安全…...

三三复制商业模式系统介绍

三三复制商业模式系统介绍&#xff1a;裂变逻辑与合规落地全解析在数字经济时代&#xff0c;社交电商与分销模式的创新成为企业突破增长瓶颈的关键。三三复制模式以其几何级数的裂变效率、清晰的层级收益结构和低门槛参与机制&#xff0c;在电商、直销等领域展现出强大的生命力…...

Granite TimeSeries FlowState R1高可用部署架构:基于Kubernetes的容器化方案

Granite TimeSeries FlowState R1高可用部署架构&#xff1a;基于Kubernetes的容器化方案 如果你正在为时间序列预测模型的生产部署而头疼&#xff0c;担心服务不稳定、无法应对流量高峰&#xff0c;那么这篇文章就是为你准备的。今天&#xff0c;我们来聊聊如何把一个强大的时…...

高效数据采集解决方案:快手内容获取工具的技术实现与应用指南

高效数据采集解决方案&#xff1a;快手内容获取工具的技术实现与应用指南 【免费下载链接】kuaishou-crawler As you can see, a kuaishou crawler 项目地址: https://gitcode.com/gh_mirrors/ku/kuaishou-crawler 在信息爆炸的时代&#xff0c;如何高效、合规地获取网络…...

SpringBoot+Tess4j:轻松实现OCR功能

一、引言二、功能演示三、功能实现1. 描述2. 编码实现四、源码五、结束语一、引言你是否曾遇到过这样的情况&#xff1a;看到一段有用的文本&#xff0c;想要快速复制下来&#xff0c;却只能眼巴巴地盯着屏幕&#xff0c;手动输入&#xff1f;其实&#xff0c;Java 也可以轻松实…...

如何一键备份QQ空间历史说说:完整数据备份与隐私保护指南

如何一键备份QQ空间历史说说&#xff1a;完整数据备份与隐私保护指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心那些记录青春的QQ空间说说会随着时间流逝而消失&#xf…...

PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧

PP-DocLayoutV3实操手册&#xff1a;display_formula公式块检测准确率提升的3个微调技巧 1. 引言&#xff1a;为什么公式检测这么重要&#xff1f; 在文档数字化处理过程中&#xff0c;数学公式的准确检测一直是个技术难点。传统的OCR系统往往把公式误判为普通文本或图像&…...

XDMA驱动内存读写测试指南:从reg_rw工具使用到AXI4时序分析

XDMA驱动内存读写测试指南&#xff1a;从reg_rw工具使用到AXI4时序分析 在FPGA与主机间的高速数据交互场景中&#xff0c;XDMA&#xff08;Xilinx DMA&#xff09;作为PCIe协议栈的核心引擎&#xff0c;其内存读写性能直接决定了系统整体吞吐量。本文将深入剖析reg_rw工具的底层…...

OneMore插件终极指南:160+功能免费解锁OneNote完整生产力

OneMore插件终极指南&#xff1a;160功能免费解锁OneNote完整生产力 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore OneMore是一款功能强大的OneNote免费开源插件&…...

uniapp集成腾讯地图:从marker点聚合到轨迹回放的跨端实战与性能调优

1. uniapp集成腾讯地图SDK的核心步骤 第一次在uniapp里用腾讯地图SDK时&#xff0c;我踩了个大坑——直接在H5端跑代码发现地图出不来。后来才明白&#xff0c;腾讯地图在H5端需要单独配置安全域名。具体操作是在腾讯地图开放平台申请key时&#xff0c;必须把H5的域名加入白名单…...