config.py中忽略了烧瓶环境

时间:2020-06-18 22:12:22

标签: flask config environment production

我正在尝试构建一个基本的烧瓶应用程序以供学习。一切都顺利进行,但是有一个我不明白的问题。在我的run.py文件中,有以下一行:

$noticia

这会将config.py加载到根目录中,该目录包含以下代码:

<form action="{{ route('noticias.update',['id' => $noticia ?? '' $noticia->id]) }}"
 method="post" enctype="multipart/form-data">

我的理解是Config包含一些“默认”设置。 devConfig和prodConfig基于Config,因此将始终包含这些值,但每个值将具有不同的env,调试和测试值。尽管我没有收到任何错误并且调试似乎已激活,但是当我运行Flask实例时,它告诉我无论如何我都在生产中运行。

app.config.from_object('config.prodConfig')

我对在终端/环境中设置env变量不感兴趣,我知道该怎么做。我感兴趣的是为什么它不起作用。毕竟,FLASK_ENV指令是有效的指令,应在指示时加载。

我在做什么错了?

1 个答案:

答案 0 :(得分:-1)

请牢记Chase的评论,即不要在应用程序中设置FLASK_ENV。从dict传递config.py的配置,然后根据应用外部的FLASK_ENV集选择合适的配置,例如与.env文件。

config.py

class BaseConfig:
    ...

class DevConfig(BaseConfig):
    ...

class ProdConfig(BaseConfig):
    ...

configs = {"development": DevConfig, "production": ProdConfig}

app.py

import os
from flask import FLask
from config import configs
...
app.config.from_object(configs[os.environ.get("FLASK_ENV", "development")])