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

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

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

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

修改源码不再需要重启 Flask

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

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

总结

Flask(6)- debug 模式的更多相关文章

  1. flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法

    from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...

  2. flask使用debug模式时,存在错误时,会占用设备内存直至服务重启才释放;debug模式会开启一个守护进程(daemon process)

    函数调用顺序flask的app.py的run-->werkzeug的serving.py的run_simple-->调用werkzeug的debug的__init__.py里的类Debug ...

  3. flask的debug模式下,网页输入pin码进行调试

    网站后端Python+Flask .FLASK调试模式之开启DEBUG与PIN使用? 自动加载: # 方式一 1 2 if __name__ == '__main__':     app.run(ho ...

  4. 【python】flask 开启 debug 模式

    方法一: 直接在run的时候添加debug from flask import Flask app = Flask(__name__) @app.route('/') def hello_world( ...

  5. Flask 在 Debug 模式下初始化2次

    请移步: http://blog.zengrong.net/post/2632.html https://stackoverflow.com/questions/9449101/how-to-stop ...

  6. Flask debug 模式 PIN 码生成机制安全性研究笔记

    Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产 ...

  7. 在pycharm_2018.2版本中开启Flask的debug的方法 (不要用命令:python **.py启动)

    断点后,先ctl+c关闭控制台程序,再点击debuger调试 问题描述:在pycharm_2018.2版本中,我明确开启了debug,代码如下所示: from flask import Flask a ...

  8. Ques1,debug模式打不开的原因

    我尝试过一下三种方法打开pycharm环境下Flask的debug模式,但是都失败了.这三种具体方法如下: 1, 2, 3, 可以说上述方法都是常规操作,可是为啥还是不能打开debug模式呢? 因为: ...

  9. flask debug 模式开启

    debug 模式开启 最近在写python flask 的Waf后台管理界面,想要启用调试模式,发现安装目前网上流行的两种方式均无法在我的Pycharm中打开调试模式. )直接在对象上设置 app.d ...

随机推荐

  1. Python - 解包的各种骚操作

    为什么要讲解包 因为我觉得解包是 Python 的一大特性,大大提升了编程的效率,而且适用性很广 啥是解包 个人通俗理解:解开包袱,拿出东西 正确理解:将元素从可迭代对象中一个个取出来 python ...

  2. 配置多个git用的ssh key

    参考 http://www.sail.name/2018/12/16/ssh-config-of-mac/ 有一点注意 Host 的名字和 HostName改为一致. 因为从git仓库复制的地址是全程 ...

  3. NSIS 制作自动升级包

    1:首先定义基础变量 !define PRODUCT_NAME "XXX"//补丁名称 !define PRODUCT_VERSION "3"//版本号 !de ...

  4. clickhouse的windowFunnel(漏斗)

    1.WindowFunnel 关于官网的解释: Returned value:Integer. The maximum number of consecutive triggered conditio ...

  5. Python成员运算,身份运算和流程控制

    成员运算 in #判断--在--里面 print('a' in 'abcd') # 字符串判断a是否在abcd里面 print('you' in 'how are you') # 这种整体也可以判断 ...

  6. SQL 练习2

    查询同时存在" 01 "课程和" 02 "课程的情况 分析:分别先查询出包含有01课程和02课程 SELECT * from sc WHERE cid='01' ...

  7. noip35

    T1 考场乱搞出锅了... 正解: 把原序列按k往左和往右看成两个序列,求个前缀和,找下一个更新的位置,直接暴跳. Code #include<cstdio> #include<cs ...

  8. FileUtils 文件工具类

    FileUtils 下载jar中的文件 package com.meeno.chemical.common.utils; import lombok.extern.slf4j.Slf4j; impor ...

  9. CSS3图片倒影技术

    http://bbs.itheima.com/thread-330315-1-1.html?wymlxt

  10. 0x800b010a 证书

    无论是装微软的什么应用,只要报这个错误,下载这个证书: http://download.microsoft.com/download/2/4/8/248D8A62-FCCD-475C-85E7-6ED ...