Flask 的 debug 模式
发布时间:2023-06-29 14:16:43 所属栏目:教程 来源:
导读:使用 Flask 开发过程中存在两个常见的问题:
当 Flask 程序出错时,没有提示错误的详细信息;
修改 Flask 源代码后需要重启 Flask 程序。
这两个问题非常的影响开发效率,因此 Flask 引入了 debug 模式解决
当 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 发生了变化,重新加载。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐