1、项目的重启

在修改代码后,需要重启项目,才会体现效果,否则执行之前的代码,当然在开启debug模式后,保存(ctrl+s)就可以完成新代码的运行,而不需要重启

2、debug模式的花样开启(开发阶段)

在默认情况下,debug模式是关闭的,开启之后ctrl+s保存之后自动重启。ctrl+鼠标左键,查看run()方法的相关参数:run(self, host=None, port=None, debug=None, load_dotenv=True, **options)

  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def hello_world():
  5. return "hello world"
  6. if __name__ == "__main__":
  7. # 方法一:在run中传入debug = True
  8. app.run(debug = True)
  9. # 方法二:.debug = True 改变debug属性
  10. # app.debug = True
  11. # 方法三:config 配置
  12. # print(isinstance(app.config.dict))
  13. # True
  14. # 由于是字典类型所以有两种写法
  15. # app.config.updata(DEBUG=True)
  16. # app.config[DEBUG] = True

本地返回值:

  1. * Detected change in 'c:\\Users\\asus\\Desktop\\down_load\\new.py', reloading
  2. * Restarting with stat
  3. Error in sitecustomize; set PYTHONVERBOSE for traceback:
  4. AttributeError: module 'sys' has no attribute 'setdefaultencoding'
  5. * Debugger is active! # debug模式开启
  6. * Debugger PIN: 324-744-275 # 网页调试的密码-有效期8小时
  7. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

网页返回值:
捕获.PNG

3、debug模式开启后的相关说明

  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def hello_world():
  5. # 写入bug
  6. a = "最是人间留不住"
  7. print(int(a))
  8. return "hello world"
  9. if __name__ == "__main__":
  10. # 方法一:在run中传入debug = True
  11. app.run(debug = True)

本地返回值:

  1. ValueError: invalid literal for int() with base 10: '最是人间留不住'

网页中返回值:
捕获.PNG
在网页中调试:输入PIN(相当于python的交互环境)
image.png
1、只能在开发环境下开启DEBUG模式,因为DEBUG模式会带来非常大的安全隐患
2、在开启了DEBUG模式后,当程序有异常而进入错误堆栈模式,你第一次点击某个堆栈想查看变量值的时候,页面会弹出一个对话框,让你输入PIN值,这个PIN值在你启动的时候就会出现,比如在刚刚启动的项目中的PIN值为294-745-044,你输入这个值后,Werkzeug会把这个PIN值作为cookie的一部分保存起来,并在8小时候过期,8小时以内不需要再输入PIN值。这样做的目的是为了更加的安全,让调试模式下的攻击者更难攻击到本站

4、文件配置(不在局限于debug)

lask项目的配置,都是通过app.config对象来进行配置的。比如要配置一个项目处于DEBUG模式下,那么可以使用app.config[‘DEBUG] = True来进行设置,那么Flask项目将以DEBUG模式运行。在Flask项目中,有四种方式进行项目的配置
硬编码

  1. app = Flask(__name__)
  2. app.config['DEBUG'] = True


updata方法**

  1. app.config.update(
  2. DEBUG=True,
  3. SECRET_KEY='...'
  4. )


加载模块的方式进行配置-app.config.from_object()
改方法既可以接收模块的的字符串名称,也可以模块对象-此时只要传入前部分即可,不需要后缀**
定义settings.py文件

  1. # 这是一个settings.py模块,专门用来存储配置项
  2. DEBUG = True
  3. HOST = "127.0.0.1"

app.config.from_object()导入settings.py

  1. # 1. 通过模块字符串
  2. app.config.from_object("settings")
  3. # 2. 通过模块对象
  4. import settings
  5. app.config.from_object(settings)

app.config.from_pyfile()方法加载一个文件(文件一般是py文件,但并不局限于py文件(ini,txt等))
此时传入的文件是一个全称,要加上后缀

  1. app.config.from_pyfile('settings.py',silent=True)
  2. # silent=True的作用
  3. # 防止在没有文件时报错-(如将settings.py拼写成setting.py)

app.config.from_object(),app.config.from_pyfile() 这两种方法的使用实现了统一修改的效果,方便操作