Flask小知识集合
全局变量g的使用
flask在上下文中提供了四种变量,分别是:
| 变量名 | 上下文 | 说明 |
|---|---|---|
| current_app | 应用上下文 | 当前激活程序的程序实例 |
| g | 应用上下文 | 处理请求时用作临时存储的对象。每次请求都会重设这个变量 |
| request | 请求上下文 | 请求对象,封装了客户端发出的HTTP请求中的内容 |
| session | 请求上下文 | 用户会话,用于存储请求之间需要“记住”的字典 |
其中g就是在一次请求中当做全局变量来使用的。g:global,给g赋值,就可以在当前这次请求中全局使用。
传参
import time
from flask import Flask
# 实例化一个Flask类,app代表着flask程序。
app = Flask(__name__)
# 向flask实例添加一个路由
@app.route('/')
def hello_world():
print(double(10))
return 'Hello World!'
def double(x):
return 2 * x
全局变量
import time
from flask import Flask,g
# 实例化一个Flask类,app代表着flask程序。
app = Flask(__name__)
# 向flask实例添加一个路由
@app.route('/')
def hello_world():
g.x = 20
print(double())
return 'Hello World!'
def double():
return 2 * g.x
g对象在整个request请求处理期间生效,这表明,g对象是与request是一一对应的。一次request请求,就有一个g对象,在这次请求之前,之后,以及同时间的请求里,他们互不干扰。
异常捕获
flask提供了一个专门用来处理应用错误的装饰器errorhandler, 利用这个装饰器,你可以非常轻松的实现对系统错误异常的捕捉和处理。
errorhandler可以传入http code,例如404,500。这是比较常见的请求错误,如果能够为这种错误提供专门的页面,无疑会提高用户的体验。除了http code, 还可以传入异常类,捕捉特定的异常。
import time
from flask import Flask,g
app = Flask(__name__)
@app.errorhandler(404)
def error(e):
print('捕捉到404,找不到路由')
return '捕捉到404,找不到路由', 404
@app.errorhandler(ZeroDivisionError)
def catch_except(e):
return '捕捉到异常 '+ str(e), 500
@app.route('/')
def hello_world():
a = 0/0
return 'Hello World!'
正常请求,除0报错

请求不存在路由

计算测试覆盖率
coverage.py是一个使用python编写的检查代码覆盖率的工具,我们可以使用它来检查测试覆盖率。
安装
pip install coverage
简单使用
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
add(2,3)
使用如下命令获取测试结果
coverage run cover_test.py
coverage report
(work) ➜ Desktop coverage report
Name Stmts Miss Cover
-----------------------------------
cover_test.py 7 2 71%
-----------------------------------
TOTAL 7 2 71%
在flask中,可以运行测试命令同时开启覆盖率检查。
coverage run --source=sayhello -m unittest discover
--source:指定要检查的包或模块为sayhello
-m 指定自动测试的命令。如果使用pytest则为 -m pytest 使用unittest则为 -m unittest

Flask小知识集合的更多相关文章
- flask 小知识总结 2018.12.18
Visual Studio Code 1.自定义python组建,方便某功能和代码的便捷操作 文件--首选项--用户代码片段--python.json--自定义需要的代码和功能 2.自定义快捷键方法 ...
- xcode 发展史 及 做iOS 必须知道的小知识
Xcode 3.0 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径.Xcode 3.0 将Mac OS X的轻松使用,UNIX 能量以及高性能的开发 ...
- s性能优化方面的小知识
总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...
- JS框架设计读书笔记之-小知识
这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识 ...
- 简述Python入门小知识
如今的Python开发工程师很受企业和朋友们的青睐,现在学习Python开发的小伙伴也很多,本篇文章就和大家探讨一下Python入门小知识都有哪些. 扣丁学堂简述Python入门小知识Python培训 ...
- Java基础小知识(一)
序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...
- 编写一个简单的flask的前后端交互的网页(flask简单知识的讲解)
实验原理: 1.什么是flask Flask是一个使用Python编写的轻量级Web应用框架,其WSGI工具采用Werkzeng,模板引擎使用Jinja2.Flask与 Django之间的区别就是Dj ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
随机推荐
- ALSA Compress-Offload API
概述 从 ALSA API 的早期开始,它就被定义为支持 PCM,或考虑到了 IEC61937 等固定比特率的载荷.参数和返回值以帧计算是常态,这使得扩展已有的 API 以支持压缩数据流充满挑战. 最 ...
- clipboard vue 一键复制
一键复制失败 首先 下载clipboard插件 npm install clipboard --save 在需要的组件里引入 也可以全局引入 import Clipboard from 'clipb ...
- 【scipy 基础】--图像处理
SciPy库本身是针对科学计算而不是图像处理的,只是图像处理也包含了很多数学计算,所以Scipy也提供了一个专门的模块ndimage用于图像处理. ndimage模块提供的功能包括输入/输出图像.显示 ...
- L2-037 包装机
#include <bits/stdc++.h> using namespace std; const int N = 110; stack<char> stk[N]; int ...
- Codeforces Round #707 (Div. 2)A~C题解
写在前边 链接:Codeforces Round #707 (Div. 2) 心态真的越来越不好了,看A没看懂,赛后模拟了一遍就过了,B很简单,但是漏了个判断重复的条件. A. Alexey and ...
- Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方法
修改jdbc.properties文件的密码
- 洛谷5789 [TJOI2017]可乐(矩阵快速幂,Floyd思想)
题意:可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机触发一种行为.现在给加里敦星球城市图,在第 0秒时可乐机器人在 1号城市,问经过了 t秒,可乐机器人的行为方案数是多少 ...
- python的列表、元组
列表(list):是Python中最常用的数据类型之一,字符串里面包含元素的是 一个个的字符,并且字符串是不可能更改的,然而列表不一样,他的每个元素都 可以是任何python类型,而且是可以被更改的 ...
- STM32外设:最小系统、低功耗模式
最小系统 启动引脚 BOOT0.BOOT1:用于设置系统的启动方式 下载引脚 JTAG的IO:JTMS.JTCK.JTDI.JTDO.NJTRST SW的IO:SWDIO.SWCLK 硬件设计 NUC ...
- 【UniApp】-uni-app-CompositionAPI传递数据
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-传递数据 那么了解完了uni-app-传递数据之后,这篇文章来给大家介绍一下 uni-app-CompositionAPI传递数据 首 ...