使用Flask和Python从配置文件中读取属性

blu*_*sky 3 python flask

阅读配置文件构建为Flask中的字典我正在尝试定义自定义配置文件以自定义我的Flask应用程序.

运行代码:

from flask import Flask
app = Flask(__name__)

import os

my_config = app.config.from_pyfile(os.path.join('.', 'config/app.conf'), silent=False)

@app.route('/')
def hello_world():

    with app.open_instance_resource('app.cfg') as f:
        print(type(f.read()))

    return 'Hello World! {}'.format(app.config.get('LOGGING'))

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

在config/app.conf中添加了以下属性:

myvar1="tester"
myvar2="tester"
myvar3="tester"
Run Code Online (Sandbox Code Playgroud)

调用hello_world()函数返回的服务:

Hello World! None
Run Code Online (Sandbox Code Playgroud)

不应该返回文件的内容而不是None?

我试图访问一个属性,app.config.get('myvar1')None在这种情况下也返回.

zwe*_*wer 6

官方Flask文档:

配置文件本身就是实际的Python文件.以后只有大写的值实际存储在配置对象中.因此,请确保为配置键使用大写字母.

因此,将./config/app.conf变量设置为:

VARIABLE_NAME = "variable value"
Run Code Online (Sandbox Code Playgroud)

加载为:

app.config.from_pyfile(os.path.join(".", "config/app.conf"), silent=False)
Run Code Online (Sandbox Code Playgroud)

注意:如果您不使用特定于实例的配置,则实际上不需要构建路径,因为它将Flask应用程序路径作为其根.

并在以后访问这些值:

app.config.get("VARIABLE_NAME")
Run Code Online (Sandbox Code Playgroud)