使用 Flask 开发过程中存在两个常见的问题

  1. 当 Flask 程序出错时,没有提示错误的详细信息
  2. 修改 Flask 源代码后需要重启 Flask 程序

这两个问题非常的影响开发效率,因此 Flask 引入了 debug 模式解决以上问题

错误示例

#!/usr/bin/python3
from flask import Flask
app = Flask(__name__) @app.route('/')
def hello_world():
1/0
return '<b>hello world</b>' if __name__ == '__main__':
app.run()

第七行,存在一个除以零的错误,在浏览器中访问 Flask ,会报错

浏览器中提示 Internal Server Error,表示服务端程序出现错误,但是没有给出错误的详细信息,即产生错误的文件、函数、行号等位置信息,排查错误非常不方便

修改源代码后需要重启

开发 Flask 程序有如下 3 个步骤:

  1. 编辑 Flask 源程序
  2. 在命令行中启动 Flask 程序
  3. 在浏览器中访问 Flask 程序

每次对 Flask 源程序进行修改后,都需要重启动 Flask 程序

例如,编写如下 Flask 程序:

from flask import Flask
app = Flask(__name__) @app.route('/')
def hello_world():
return '<b>hello world</b>' if __name__ == '__main__':
app.run()

程序的功能:访问页面 / 时,返回文本 ‘hello world’,现在希望返回文本 ‘HELLO WORLD’,需要做如下工作:

  1. 切换到编辑器,编辑 Flask 源程序,将 ‘hello world’ 修改为 ‘HELLO WORLD’
  2. 切换到终端,终止原先运行的 Flask 程序,再次运行 Flask 程序
  3. 切换到浏览器,访问页面 /

在开发的过程中,需要在编辑器、终端、浏览器这 3 个程序之间来回切换,非常的繁琐。

这个时候,我们就需要使用 Debug 模式来快速解决上面的这两个问题

Flask 的 Debug 模式

Flask 程序可以运行在 Debug 模式下,Debug 模式提供了如下功能:

  1. 当 Flask 程序出现错误时,在浏览器中提示错误的详细信息
  2. 修改 Flask 程序代码后,Flask 程序会自动重新加载,不需要重启 Flask 程序,即可在浏览器中看到修改后的效果

开启 debug 模式

from flask import Flask
app = Flask(__name__) if __name__ == '__main__':
app.run(debug = True)

加个 debug = True 就好啦

如果加了还是不生效呢?

https://www.cnblogs.com/poloyy/p/14993520.html

debug 模式开启后的控制台输出

FLASK_APP = 4_debug.py
FLASK_ENV = development
FLASK_DEBUG = 1
In folder /Users/polo/Downloads/Flask_learning
/usr/bin/python3 -m flask run
* Serving Flask app '4_debug.py' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 233-208-558

Debug mode: on,表示 Flask 程序已经进入了调试模式

开启后,再次运行上面的代码,然后访问浏览器

浏览器中显示错误类型 ZeroDivisionError,并给出了错误的详细位置:文件名 line 15, in hello_world,给调试程序提供了方便

修改源码不再需要重启 Flask

修改代码并保存,Flask 就能识别到修改,然后重新加载,下图是对应的控制台输出内容

这个时候直接再次访问浏览器就能看到修改后的效果了

总结

Flask(6)- debug 模式的更多相关文章

  1. flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法

    from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...

  2. flask使用debug模式时,存在错误时,会占用设备内存直至服务重启才释放;debug模式会开启一个守护进程(daemon process)

    函数调用顺序flask的app.py的run-->werkzeug的serving.py的run_simple-->调用werkzeug的debug的__init__.py里的类Debug ...

  3. flask的debug模式下,网页输入pin码进行调试

    网站后端Python+Flask .FLASK调试模式之开启DEBUG与PIN使用? 自动加载: # 方式一 1 2 if __name__ == '__main__':     app.run(ho ...

  4. 【python】flask 开启 debug 模式

    方法一: 直接在run的时候添加debug from flask import Flask app = Flask(__name__) @app.route('/') def hello_world( ...

  5. Flask 在 Debug 模式下初始化2次

    请移步: http://blog.zengrong.net/post/2632.html https://stackoverflow.com/questions/9449101/how-to-stop ...

  6. Flask debug 模式 PIN 码生成机制安全性研究笔记

    Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产 ...

  7. 在pycharm_2018.2版本中开启Flask的debug的方法 (不要用命令:python **.py启动)

    断点后,先ctl+c关闭控制台程序,再点击debuger调试 问题描述:在pycharm_2018.2版本中,我明确开启了debug,代码如下所示: from flask import Flask a ...

  8. Ques1,debug模式打不开的原因

    我尝试过一下三种方法打开pycharm环境下Flask的debug模式,但是都失败了.这三种具体方法如下: 1, 2, 3, 可以说上述方法都是常规操作,可是为啥还是不能打开debug模式呢? 因为: ...

  9. flask debug 模式开启

    debug 模式开启 最近在写python flask 的Waf后台管理界面,想要启用调试模式,发现安装目前网上流行的两种方式均无法在我的Pycharm中打开调试模式. )直接在对象上设置 app.d ...

随机推荐

  1. RTB1靶机

    一.信息收集 信息收集 http://192.168.111.132/Hackademic_RTB1/?cat=1 http://192.168.111.132/Hackademic_RTB1/?ca ...

  2. CVPR2021 | Transformer用于End-to-End视频实例分割

    ​ 论文:End-to-End Video Instance Segmentation with Transformers 获取:在CV技术指南后台回复关键字"0005"获取该论文 ...

  3. 还怕问源码?Github上神级Android三方源码解析手册,已有7.6 KStar

    或许对于许多Android开发者来说,所谓的Android工程师的工作"不过就是用XML实现设计师的美术图,用JSON解析服务器的数据,再把数据显示到界面上"就好了,源码什么的,看 ...

  4. zookeeper的简介和相关命令操作

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  5. 第6篇-Java方法新栈帧的创建

    在 第2篇-JVM虚拟机这样来调用Java主类的main()方法 介绍JavaCalls::call_helper()函数的实现时提到过如下一句代码: address entry_point = me ...

  6. 【笔记】jupyter notebook基础使用

    jupyter notebook基础使用 执行代码 添加格子 在输出结果的同时添加一行 run cells and insert below 输出结果,若后续没有新的代码行了,则会在后面添加一行 查看 ...

  7. 【笔记】ROC曲线

    ROC曲线 前文讲了PR曲线 这里说ROC曲线,其描述的是TPR和FPR之间的关系 TPR是什么呢,TPR就是召回率 FPR是什么呢,FPR就是和TPR对应的,即真实值为0的一行中的预测为1的部分比例 ...

  8. Spring源码浅析之bean实例的创建过程(一)

    在之前的文章内容中,简单介绍了bean定义的加载过程,下面这篇的主要内容就是bean实例的创建过程. bean实例的创建方式 ApplicationContext context = new Clas ...

  9. [论文阅读] ALM-HCS(高对比场景自适应对数映射)

    [论文阅读] ALM-HCS(高对比场景自适应对数映射) 文章: Adaptive Logarithmic Mapping for Displaying High Contrast Scenes 1. ...

  10. 利用VAR模型科学管理仓位,提升策略效率

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 期货行情瞬息万变,保证金体系决定了期货交易的杠杆属性.保证金放多了,资金利用率低,放少了,可能在大幅度的 ...