1、项目的重启
在修改代码后,需要重启项目,才会体现效果,否则执行之前的代码,当然在开启debug模式后,保存(ctrl+s)就可以完成新代码的运行,而不需要重启
2、debug模式的花样开启(开发阶段)
在默认情况下,debug模式是关闭的,开启之后ctrl+s保存之后自动重启。ctrl+鼠标左键,查看run()方法的相关参数:run(self, host=None, port=None, debug=None, load_dotenv=True, **options)
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():return "hello world"if __name__ == "__main__":# 方法一:在run中传入debug = Trueapp.run(debug = True)# 方法二:.debug = True 改变debug属性# app.debug = True# 方法三:config 配置# print(isinstance(app.config.dict))# True# 由于是字典类型所以有两种写法# app.config.updata(DEBUG=True)# app.config[DEBUG] = True
本地返回值:
* Detected change in 'c:\\Users\\asus\\Desktop\\down_load\\new.py', reloading* Restarting with statError in sitecustomize; set PYTHONVERBOSE for traceback:AttributeError: module 'sys' has no attribute 'setdefaultencoding'* Debugger is active! # debug模式开启* Debugger PIN: 324-744-275 # 网页调试的密码-有效期8小时* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
3、debug模式开启后的相关说明
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():# 写入buga = "最是人间留不住"print(int(a))return "hello world"if __name__ == "__main__":# 方法一:在run中传入debug = Trueapp.run(debug = True)
本地返回值:
ValueError: invalid literal for int() with base 10: '最是人间留不住'
网页中返回值:
在网页中调试:输入PIN(相当于python的交互环境)
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项目中,有四种方式进行项目的配置
硬编码
app = Flask(__name__)app.config['DEBUG'] = True
updata方法**
app.config.update(DEBUG=True,SECRET_KEY='...')
加载模块的方式进行配置-app.config.from_object()
改方法既可以接收模块的的字符串名称,也可以模块对象-此时只要传入前部分即可,不需要后缀**
定义settings.py文件
# 这是一个settings.py模块,专门用来存储配置项DEBUG = TrueHOST = "127.0.0.1"
app.config.from_object()导入settings.py
# 1. 通过模块字符串app.config.from_object("settings")# 2. 通过模块对象import settingsapp.config.from_object(settings)
app.config.from_pyfile()方法加载一个文件(文件一般是py文件,但并不局限于py文件(ini,txt等))
此时传入的文件是一个全称,要加上后缀
app.config.from_pyfile('settings.py',silent=True)# silent=True的作用# 防止在没有文件时报错-(如将settings.py拼写成setting.py)
app.config.from_object(),app.config.from_pyfile() 这两种方法的使用实现了统一修改的效果,方便操作
