学习资料:
b站:??????2021年史上最强Flask框架 Flask6天速成从入门到精通(无偿分享附赠课件资料)_哔哩哔哩_bilibilid
? ? ? ? 稍后持续更新,如有错误,请大佬们纠正?
Day1?
一、Flask对象初始化参数
二、三种配置加载方式
(一)从配置对象加载:拥有继承性,但容易暴露敏感代码
(二)配置文件中加载:保护了敏感代码的泄露,但是文件路径是固定不变,每次在不同的编译环境下需要更改代码
(三)从环境变量中加载:独立、保护敏感代码,但是不方便,每次都需要设置环境变量
下面是相关的配置加载的代码
"""
Author:Lucky_bacon
Tool:Pycham、python3
"""
# 导入Flas k类库
from flask import Flask
#配置对象中加载配置信息
# class DefaultConfig(object):
# '''
# 默认配置
# '''
# SECRET_KEY = 'lUCKY_BACON配置对象加载' #配置信息
#引用__name__函数,url指链接后缀,static_folder是文件存放位置
app = Flask(__name__,static_url_path='/s',static_folder='static_files')
#配置
# app.config.from_object(DefaultConfig)#对象的设置
# app.config.from_pyfile('setting.py')#文件加载的配置属性,调用了setting。py文件里面的信息
app.config.from_envvar('ENVOR_SETTING')
# app.config.from_envvar('ENVOR_SETTING',silent=True)
#环境变量的加载,里面的变量是自己去定义的,silent的作用:当环境变量不存在时,跳过它,避免报错,并返回个None
# 视图函数(路由)
@app.route('/')
#输出数据函数
def index():
#输出配置信息(配置对象加载)
print(app.config['SECRET_KEY'])
return '<h1>Hello Flask!<h1>'
# 启动实施(只在当前模块运行)
if __name__ == '__main__':
app.run()
所以我们一般结合了三者的优缺点,采用了两者结合的方式来进行配置加载:对象加载默认配置+环境变量中加载来保护敏感信息
"""
Author:Lucky_bacon
Tool:Pycham、python3
"""
# 导入Flas k类库
from flask import Flask
#配置对象中加载配置信息
class DefaultConfig(object):
'''
默认配置
'''
SECRET_KEY = 'lUCKY_BACON' #配置信息
#创建一个flask工厂对象函数
def creat_flask_app(config):
#引用__name__函数,url指链接后缀,static_folder是文件存放位置
app = Flask(__name__,static_url_path='/s',static_folder='static_files')
#配置
app.config.from_object(DefaultConfig)#对象的设置
app.config.from_envvar('ENVOR_SETTING')
# app.config.from_envvar('ENVOR_SETTING',silent=True)
#环境变量的加载,里面的变量是自己去定义的,silent的作用:当环境变量不存在时,跳过它,避免报错,并返回个None
return app#如果不返回的话,下面的调用函数就无法获取信息
app = creat_flask_app(DefaultConfig)#调用创立的函数
# 视图函数(路由)
@app.route('/')
#输出数据函数
def index():
#输出配置信息(配置对象加载)
print(app.config['SECRET_KEY'])
return '<h1>Hello Flask!<h1>'
# 启动实施(只在当前模块运行)
if __name__ == '__main__':
app.run()
在这里的环境变量ENVOR_SETTING一定要记得添加环境变量,不然会报错,说环境变量ENVOR_SETTING没有定义
?
?
?
setting.py的代码
"""
Author : Lucky_bacon
Tool : Pycham、python3
"""
SECRET_KEY = 'lUCKY_BACON real vaul'
三、app.run()函数的使用
|