flask内容学习之蓝图以及单元测试
蓝图的概念:
简单来说,蓝图是一个存储操作方法的容器。这些操作在这个蓝图被注册到一个应用之后就可以被调用。Flask可以通过蓝图来制止URL以及处理请求。
Flask使用蓝图来让应用实现模块化,在Flask中,蓝图具有如下数次那个
1,一个应用可以具有多个蓝图;
2,可以敬一个蓝图注册到任何一个未使用的URL下比如"/","/example"下或者其子域名中;
3,一个应用中,一个模块可以注册多次;
4,蓝图可以具有自己的模板,竟然文件或者其他的通用的操作方法,它并不是必须要实现应用中的视图和函数;
在一个应用初始化时,就应该要注册所需要使用的蓝图。
但是一个蓝图并不是一个完整的应用,它不能独立于应用运行,而必须注册到某一个应用中才能运行。
蓝图对象的用法:
蓝图的对象的用法实际上和一个Flask随想差不多,而最大的区别在于一个蓝图没有对象没有办法独立的运行,必须要讲它注册在一个运用对象上才可以生效
使用蓝图的可以分为三个步骤:
1,创建一个蓝图对象:(在Flask中创建一个Python的包,在包的initpy文件中导入蓝图的,实例化出一个蓝图的对象);
2,在这个蓝图的对象上进行操作,注册路由,指定静态文件夹,注册模板过滤器(Flask项目中建立static和temolates文件夹);
3,在init的py文件中导入views函数中的视图函数,(from .views
import *);
4,在应用对象上注册这个蓝图的对象,在这个应用启动后,通过在定义的蓝图地址来访问蓝图中定义的视图函数。
from flask import Blueprint
blur_index = Blueprint("index", __name__,
url_prefix="/index", # 指定路由地址
static_folder="static", # 指定静态文件地址
template_folder="templates" # 指定模板地址
)
# 导入views中的内容必须在蓝图对象实例化之后
from .views import *
__init__.py文件夹
from . import blur_index
from flask import render_template @blur_index.route("/")
def index():
return render_template("index.html")
views.py文件
from flask import Flask
from index import blur_index app = Flask(__name__) app.register_blueprint(blur_index) # 注册蓝图 if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
注册蓝图到应用上
蓝图的运行机制
1,蓝图是保存了一组将来可以在对象上执行的操作,注册路由就是一种操作,
2,当在应用对象上调用route装饰器注册路由时,这个操作将修改对象的url_map的路由表;
3,然而,蓝图对对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时。它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项
4,当执行对此昂的register_blueprint()方法的,应用对象将从蓝图对此昂的defered_functions列表中取出每一项,并以吱声作为参数执行该匿名函数,即调用应用对此昂的add_url_rule()方法,这将真正的修改应用对象的路由表
flask内容学习之蓝图以及单元测试的更多相关文章
- flask内容学习第三天(flak中的csrf跨站请求)
问题一:什么是csrf? 英文全称Cross Site Request Forgery(跨站请求伪造): 通俗来讲就是攻击者盗用你的身份,冒用你的名义发出恶意请求,包括发送邮件,电话信息,甚至于转账或 ...
- Python框架学习之Flask中的蓝图与单元测试
因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...
- 读Flask源代码学习Python--config原理
读Flask源代码学习Python--config原理 个人学习笔记,水平有限.如果理解错误的地方,请大家指出来,谢谢!第一次写文章,发现好累--!. 起因 莫名其妙在第一份工作中使用了从来没有接 ...
- maven 学习---使用Maven运行单元测试
要通过Maven运行单元测试,发出此命令: mvn test 这会在你的项目中运行整个单元测试. 案例学习 创建两个单元测试,并通过 Maven 的运行它.参见一个简单的 Java 测试类: pack ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
- Flask(9)- 蓝图的基本使用
前言 在前面的例子中,所有的页面处理逻辑都是放在同一个文件中,随着业务代码的增加,将所有代码都放在单个程序文件中是非常不合适的 不仅会让阅读代码变得困难,而且会给后期维护带来麻烦 Flask 中使用蓝 ...
- Flask入门学习——蓝图Blueprint
flask蓝图可以实现应用程序的模块化,即通常作用于相同的url前缀,eg:/user/id,/user/profile等类似这样,可以放在一个模块当中,这样会让应用更加清晰便于开发与维护. 这里有个 ...
- 你真的懂Flask中浅谈蓝图Blueprint吗?
一,什么是Flask中的蓝图Blueprint Blueprint是用于实现Flask框架中单个应用的视图,模板,静态文件的集合. Blueprint 是一个存储操作(路由映射)方法的容器,这些操作在 ...
- Maven相关内容学习笔记一:基本配置和使用
首先必须推荐的这本书<Maven实战> 许晓斌,机械工业出版社 Maven简介 其实使用Maven也有很久时间了,大部分都是别人建好了工程我使用一下,实际上并没有非常详细的使用经验,这次到 ...
随机推荐
- Git坑换行符自动转换 [转载]
转自https://www.cnblogs.com/zjoch/p/5400251.html 源起 一直想在 GitHub 上发布项目.参与项目,但 Git 这货比较难学啊.买了一本<Git 权 ...
- 山寨版 WP8.1 Cortana 启动 PC
8.1 dev preview 发布以来 Cortana 很受关注 前一段看到有视频演示用 Cortana 来启动 PC 看视频也是启动第三方应用实现的,简单来弄其实就是个语音启动应用 + 网络唤醒么 ...
- javascript获取时间戳
时间戳: 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp). JavaScript 获取当前时间戳: < ...
- T4模版自动生成MSSQL实体类
在Model层建立ModelAuto.ttinclude文件 <#@ assembly name="System.Core"#> <#@ assembly nam ...
- Lambda表达式树构建(上)
概述 Lambda是C#常用的语句,采用委托等方式,来封装真实的代码块.Lambda其实就是语法糖,是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可 ...
- 一起学Hive——详解四种导入数据的方式
在使用Hive的过程中,导入数据是必不可少的步骤,不同的数据导入方式效率也不一样,本文总结Hive四种不同的数据导入方式: 从本地文件系统导入数据 从HDFS中导入数据 从其他的Hive表中导入数据 ...
- 【Android】setHapticFeedbackEnabled 设置
使其在触摸的时候没有触感反馈.接着设置长按事件的监听. 代码在:launcher launcher->setupViews方法 // Setup the workspacemWorkspace. ...
- (三)apache的安装与配置
一.安装: 推荐使用cygwin自带的Setup.exe.带来的好处不言而喻,所有安装的程序都是经过测试的,这样确保你不会把宝贵的时间浪费来毫无意义的劳动上. 在安装程序中选择两个包就行了(分别是ap ...
- BZOJ3796 Mushroom追妹纸 字符串 SA KMP
原文链接https://www.cnblogs.com/zhouzhendong/p/9253173.html 题目传送门 - BZOJ3796 题意 找一个串 $w$ 满足: 1.$w$ 是 $s_ ...
- 基于PySpark的网络服务异常检测系统 阶段总结(二)
在上篇博文中介绍了网络服务异常检测的大概,本篇将详细介绍SVDD和Isolation Forest这两种算法 1. SVDD算法 SVDD的英文全称是Support Vector Data Descr ...