如果你在运行应用程序的终端会话中查看,则会看到该错误的堆栈跟踪。 堆栈跟踪对于调试错误非常有用,因为它们显示了该堆栈中的调用顺序,一直到产生错误的行:
venv) $ flask run
* Serving Flask app "microblog"
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
[2017-09-14 22:40:02,027] ERROR in app: Exception on /edit_profile [POST]
Traceback (most recent call last):
File "/home/miguel/microblog/venv/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
context)
File "/home/miguel/microblog/venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
cursor.execute(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: user.username
Debug Mode
你看到上面处理错误的方式非常适合在生产服务器上运行的系统。 如果出现错误,用户将获得一个模糊的错误页面(尽管我将使该错误页面更好),并且该错误的重要细节在服务器进程输出或日志文件中。
但是,在开发应用程序时,可以启用调试模式,Flask在该模式下直接在浏览器上输出一个非常好的调试器。 要激活调试模式,请停止应用程序,