在Flask项目的配置中都是通过app.config对象来进行配置的。比如要配置一个项目的SECRET_KEY,可以使用app.config['SECRET_KEY'] = "xxx"来进行设置,在Flask项目中,有四种方式进行项目的配置:
1、直接编码:
from flask import Flask
app = Flask(__name__)
app.config['SECRET_KEY'] = 'I love you'
@app.route('/')
def hello_world():
# data = app.config['SECRET_KEY']
data = app.config.get('SECRET_KEY')
return 'Hello World! My SECRET_KEY is : ' + data
if __name__ == '__main__':
app.run()
运行结果:
2、app.config是flask.config.Config的实例,而Config类是继承自dict,因此可以通过update方法:
from flask import Flask
app = Flask(__name__)
# app.config['SECRET_KEY'] = 'I love you'
app.config.update(
DEBUF=True,
SECRET_KEY='I love you'
)
@app.route('/')
def hello_world():
# data = app.config['SECRET_KEY']
data = app.config.get('SECRET_KEY')
return 'Hello World! My SECRET_KEY is : ' + data
if __name__ == '__main__':
app.run()
运行结果:
3、当配置文件非常多是时候,可以单独的把所有配置项放到一个配置文件中。通过app.config.from_object()方法进行加载,并且该方法既可以接收模块的的字符串名称,也可以模块对象。
# app.py
from flask import Flask
app = Flask(__name__)
# 方法一:通过模块字符串
# app.config.from_object('config')
# 方法二:通过模块对象
import config
app.config.from_object(config)
@app.route('/')
def hello_world():
# data = app.config['SECRET_KEY']
data = app.config.get('SECRET_KEY')
return 'Hello World! My SECRET_KEY is : ' + data
if __name__ == '__main__':
app.run()
# config.py
# 注意:配置项中的字母最好都是大写字母
SECRET_KEY = 'I love you'
运行结果:
4、也可以通过另外一个方法app.config.from_pyfile()进行加载,该方法传入一个文件名,通常是以.py结尾的文件,但也不限于只使用.py后缀的文件。
from flask import Flask
app = Flask(__name__)
# silent=True表示如果配置文件不存在的时候不抛出异常,默认是为False,会抛出异常
app.config.from_pyfile('config.py', silent=True)
@app.route('/')
def hello_world():
# data = app.config['SECRET_KEY']
data = app.config.get('SECRET_KEY')
return 'Hello World! My SECRET_KEY is : ' + data
if __name__ == '__main__':
app.run()
运行结果:
Flask项目内置了许多的配置项,所有的内置配置项可以详细通过官网进行查询:Configuration Handling — Flask Documentation (2.0.x)
以JSON_AS_ASCII为了进行演示: 【默认JSON_AS_ASCII=True】
示例代码: 【app.config['JSON_AS_ASCII'] = True】
from flask import Flask
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = True
@app.route('/')
def hello_world():
return {'name': '张三'}
if __name__ == '__main__':
app.run()
运行结果:
示例代码:【app.config['JSON_AS_ASCII'] = False】
from flask import Flask
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
@app.route('/')
def hello_world():
return {'name': '张三'}
if __name__ == '__main__':
app.run()
运行结果: