使用.cfg配置文件运行一个简单的python flask应用程序。我似乎无法返回配置值,因此无法获得键入错误

时间:2018-11-14 19:51:15

标签: python flask

该程序的目的只是返回从名为'defaults.cfg'的.cfg配置文件传递的值。

我完全理解应该在此处传递的内容,老实说,从练习中复制了所有意图和目的的代码,但是失败并出现“键错误:(值)”(所有值都给出键错误,这只是第一手的内容),我不知道为什么。我一直无法在线找到解决方案,并且该代码在原理上与朋友的更复杂的程序运行相同的Web应用程序相同,并且他的工作还不错。

显然使用大写字母作为配置键是一件事情,我已经做到了,并且我确定我已经安装了所有必需的库/二进制文件。

我正在Ubuntu的Windows上的Bash上执行此操作。

谢谢您的考虑。

default.cfg

[config]
DEBUG = True
IP_ADDRESS = 0.0.0.0
PORT = 5000

configuration.py

import ConfigParser

from flask import Flask

app = Flask(__name__)

@app.route('/')
def root():
    return "Sup! Hollerin' at ya from the configuration testing app"

@app.route('/WTF/')
def tellMeh():
    return app.config['PORT']

@app.route('/config/')
def config():
    str = []
    str.append(app.config['DEBUG'])
    str.append('port:'+app.config['PORT'])
    str.append('ip_address:'+app.config['IP'])
    return '\t'.join(str)

def init(app):
    config = ConfigParser.ConfigParser()
    try:
        config_location = "etc/defaults.cfg"
        config.read(config_location)

        app.config['DEBUG'] = config.get("config", "DEBUG")
        app.config['IP'] = config.get("config", "IP_ADDRESS")
        app.config['PORT'] = config.get("config", "PORT")

        print "Succesfully read configs from: ", config_location
    except:
        print "Couldn't read configs from: ", config_location

if __name__ == '__main__':
    init(app)
    app.run(
        host=app.config['IP'],
        port=int(app.config['PORT']))

1 个答案:

答案 0 :(得分:0)

根据调用方式,您将获得与该代码不同的行为。

FLASK_APP=configuration.py flask run将跳过名为init(app)的底部的部分

python configuration.py将运行该部分,并调用init(app)

您可能希望将通话移至init()下方的app = Flask(...)