Flask的RuntimeError错误处理

在Flask框架中,为我们提供了丰富的上下文对象/变量(request、session、current_app、g),这些上下文对象可以根据不同的上下文环境具备不同的值,所以他们是依赖于上下文环境的,而他们的使用也必须在上下文环境中,如果脱离了上下文环境,对这些没有上下文环境的上下文对象/变量进行相应的操作就会报错:RuntimeError

  通俗一点理解(current_app):

    应用上下文对象current_app就是对当前Flask创建出来的app对象的一个代理,所以在使用current_app的时候就需要指定它所代理的是哪个app对象(及指定上下文环境),如果未指定,系统就会报错RuntimeError

1from flask import Flask, current_app 2 3app = Flask(__name__) 4 5# 错误写法 6current_app.config['SECRET_KEY'] = 'jfiagiisfashjsjf' 7 8@app.route("/") 9def demo(): 10 print(current_app.config.get('SECRET_KEY')) 11 return 'Is OK' 12if __name__ == '__main__': 13 app.run()

  如果按照上面的写,就会导致current_app不知道自己所处的上下文环境,所以会报错:RuntimeError: Working outside of application context.

  修改的办法即为给当前的current_app指定上下文环境

1from flask import Flask, current_app 2 3app1 = Flask(__name__) 4 5app2 = Flask(__name__) 6 7# 利用with语句,指定当前的current_app处于的环境是app1对象 8with app1.app_context(): 9 current_app.config['SECRET_KEY'] = 'jfiagiisfashjsjf' 10@app1.route("/") 11def demo(): 12 print(current_app.config.get('SECRET_KEY')) 13 return 'Is OK' 14if __name__ == '__main__': 15 app1.run()

   如上,如果我创建了两个app对象app1和app2,如果我不用with语句指定current_app的上下文环境,它就不知道是代理app1还是代理app2

  同理,如果在蓝图中进行使用current_app的时候也需要指定上下文环境

  当然,如果在视图函数里面进行使用,如:

  就不需要在用with语句进行指定上下文环境了,@app1.route("/")装饰器就已经给我们指定了上下文环境。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )