BlackA,Talk is cheap,Show me the code.
上一节我们已经成功的运行了第一个flask程序,在浏览器显示HelloWorld,然而在实际写程序的过程中,你可能会遇到各种各样的bug,调试bug是每一个程序员必备的技能,这一节我们就来学习如何利用flask提供的工具快速的调试错误。
下面是一个有问题的flask程序:
# debug_demo.py -- 一个有问题的flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello World" @app.route("/debug_demo") def debug_demo(): # 这行代码产生了一个除零错误 return 1/0 if __name__ == "__main__": app.run()
我们来看下这段代码的运行效果:
当访问 127.0.0.1:5000 时,程序正常执行index函数,在浏览器上显示HelloWorld,当访问 127.0.0.1:5000/debug_demo 时,程序执行debug_demo函数,产生了一个除零错误,我们可以通过控制台上的日志看到这个错误的详细信息,但是在浏览器的窗口只是简单的显示了 500 Internal Server Error (服务器内部错误),看不到这个错误的详细信息,这就对开发人员很不友好,我们可以设置flask的debug模式来让浏览器显示错误的详细信息。
可以在app.run()中传入一个关键字参数debug,设置app.run(debug = True),这样就可以设置当前项目为debug模式:
# debug_demo.py -- 一个有问题的flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello World" @app.route("/debug_demo") def debug_demo(): # 这行代码产生了一个除零错误 return 1/0 if __name__ == "__main__": # 这里设置debug = True app.run(debug = True)
运行结果:
可以看到我们从程序已经处于debug模式(控制台的输出信息),并且在左侧的浏览器中显示了这个bug的详细信息。
可以在项目目录新建一个文件,我这里取名为config.py,然后通过代码将这个文件导入到当前项目,完整代码如下:
# config.py DEBUG = True
# debug_demo.py -- 一个有问题的flask程序 from flask import Flask # 导入config模块 import config app = Flask(__name__) # 这里设置使用config app.config.from_object(config) @app.route('/') def index(): return "Hello World" @app.route("/debug_demo") def debug_demo(): # 这行代码产生了一个除零错误 return 1/0 if __name__ == "__main__": app.run()
运行结果:
我们同样进入到了debug模式。