Flask小知识集合

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Flask小知识集合,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

全局变量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报错
Flask小知识集合

请求不存在路由
Flask小知识集合

计算测试覆盖率

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小知识集合

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/196541.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!