Flask小知识集合

1|0全局变量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对象,在这次请求之前,之后,以及同时间的请求里,他们互不干扰。

2|0异常捕获


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报错

请求不存在路由

3|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


__EOF__

本文作者goldsunshine
本文链接https://www.cnblogs.com/goldsunshine/p/15957406.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   金色旭光  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示