• 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

  • 相关阅读:
    delphi内存管理
    Dbgrid导出为word
    indy传输文件
    TMethod
    http状态码详解
    如何严格设置php中session过期时间
    http和https的优缺点,区别与工作原理
    session的生命周期
    Mysql分库分表方案,如何分,怎样分?
    【观点】程序员应知——循序渐进 狼人:
  • 原文地址:https://www.cnblogs.com/goldsunshine/p/15957406.html
Copyright © 2020-2023  润新知