加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Flask 的 debug 模式

发布时间:2023-06-29 14:16:43 所属栏目:教程 来源:
导读:使用 Flask 开发过程中存在两个常见的问题:

当 Flask 程序出错时,没有提示错误的详细信息;

修改 Flask 源代码后需要重启 Flask 程序。

这两个问题非常的影响开发效率,因此 Flask 引入了 debug 模式解决
使用 Flask 开发过程中存在两个常见的问题:

当 Flask 程序出错时,没有提示错误的详细信息;

修改 Flask 源代码后需要重启 Flask 程序。

这两个问题非常的影响开发效率,因此 Flask 引入了 debug 模式解决以上问题。本节讲解如何启用 debug 模式,并通过具体的例子,讲解在 debug 模式下是如何解决以上问题的。

1. 开发中的常见问题
1.1 没有提示错误的详细信息
如果 Flask 程序中有错误,在浏览器界面中看不到错误的详细信息。下面是一个包含错误的 Flask 程序 error.py:

#!/usr/bin/python3
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    /
    return '<b>hello world</b>'
if __name__ == '__main__':
    app.run()
在第 7 行,存在一个除以零的错误,在浏览器中访问该 Flask 程序,显示如下:

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

1.2 修改源代码后需要重启
开发 Flask 程序有如下 3 个步骤:

编辑 Flask 源程序
在命令行中启动 Flask 程序
在浏览器中访问 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’,需要做如下工作:

切换到编辑器,编辑 Flask 源程序,将 ‘hello world’ 修改为 ‘HELLO WORLD’
切换到终端,终止原先运行的 Flask 程序,再次运行 Flask 程序
切换到浏览器,访问页面 /
在开发的过程中,需要在编辑器、终端、浏览器这 3 个程序之间来回切换,非常的繁琐。

2. Flask 的 Debug 模式
2.1 简介
Flask 程序可以运行在 Debug 模式下,Debug 模式提供了如下功能:

当 Flask 程序出现错误时,在浏览器中提示错误的详细信息
修改 Flask 程序代码后,Flask 程序会重新加载,不需要重启 Flask 程序,即可在浏览器中看到修改后的效果
调用 Flask 应用的 run 方法时,设置参数 Debug = True,启动 Flask 程序的调试模式。编写程序 debug-on.py 如下:

from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':
    app.run(debug = True)
在第 5 行,app.run(debug = True),启动 Flask 程序的调试模式。运行程序,输出如下:

$ python3 debug.py
 * Serving Flask app "debug" (lazy loading)
 * Environment: production
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 316-471-540
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
在第 4 行,Debug mode: on,表示 Flask 程序已经进入了调试模式。

2.2 提示错误的详细信息
编写一个包含错误的 Flask 程序 error-debug-on.py,代码如下:

#!/usr/bin/python3
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    /
    return '<b>hello world</b>'
if __name__ == '__main__':
    app.run(debug = True)
在第 7 行,函数 hello_world 中,存在一个除以 0 的错误;在第 11 行,设置 debug = True 启用调用模式,运行程序

浏览器中显示错误类型 ZeroDivisionError,并给出了错误的详细位置:bug.py, line 7, in hello_world,给调试程序提供了方便。

2.3 修改源码不用重启
启用调试模式后,不用重启 Flask 程序,即可在浏览器中看到修改后的效果,本节演示这个过程。

编写 Flask 程序
编写一个 Flask 程序 reload.py,使用 app.run(debug = True) 启用调试模式:

#!/usr/bin/python3
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return '<b>hello world</b>'
if __name__ == '__main__':
    app.run(debug = True)
启动 Flask 程序

终端中显示: * Detected change in ‘/home/guest/reload.py’, reloading
,表示 Flask 程序检测到 reload.py 发生了变化,重新加载。
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章