Flask(6)- debug 模式

简介: Flask(6)- debug 模式

使用 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 ,会报错

image.png

浏览器中提示 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 程序已经进入了调试模式

 

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


image.png

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

 

修改源码不再需要重启 Flask

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

image.png

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

 

总结


image.png

相关文章
|
15天前
|
Python
通过命令行的方式快速创建一个flask项目
通过命令行的方式快速创建一个flask项目
15 0
|
7月前
|
Python
PyCharm在用Django开发时debug模式启动失败显示can&#39;t find &#39;__main__&#39; module的解决方法
初次用Django开发web应用,在试图用Pycharm进行debug的时候,出现了一个奇怪的问题。以正常模式启动或者在terminal启动都没有问题。但是以debug模式启动时,显示`can&#39;t find &#39;__main__&#39; module”`报错。在网上找了很久都没有看到解决方法,最后在某乎上看到一篇文章,在启动时加上`--noreload`参数,既可以debug模式启动。
104 0
|
10月前
|
Python
python flask 定义302状态和重定向
python flask 定义302状态和重定向
137 0
|
10月前
|
Python
python flask自定义404错误页面
python flask自定义404错误页面
178 0
|
前端开发 JavaScript Java
Flask Web 极简教程(二)- Flask 模板(Part E)
Flask Web 极简教程(二)- Flask 模板(Part E)
Flask Web 极简教程(二)- Flask 模板(Part E)
|
数据采集 安全 数据安全/隐私保护
Flask Web 极简教程(四)- Flask WTF Froms(Part A)
Flask Web 极简教程(四)- Flask WTF Froms(Part A)
Flask Web 极简教程(四)- Flask WTF Froms(Part A)
|
SQL 前端开发 算法
【flask进阶】Flask实现自定义分页(python web通用)
分页操作在web开发中几乎是必不可少的,而我们的flask不像django自带封装好的分页操作,要分页则需要依赖flask-sqlalchemy中的分页查询,但是分页这么重要且简单的操作,自己实现必须要会这个思维,我也在网上看了一些,但大体上不合我意,因此这篇我带大家手写一个分页操作!
502 0
【flask进阶】Flask实现自定义分页(python web通用)
|
Python
Flask(2)- 第一个 Flask Application
Flask(2)- 第一个 Flask Application
112 0
Flask(2)- 第一个 Flask Application
|
存储 数据安全/隐私保护 Python
Flask(12)- 操作 Session
Flask(12)- 操作 Session
164 0
Flask(12)- 操作 Session
|
存储 搜索推荐 机器人
Flask(1)- 简介
Flask(1)- 简介
179 0
Flask(1)- 简介