【发布时间】:2021-10-14 10:11:49
【问题描述】:
我有一个简单的 Flask 应用程序,其配置文件具有 Config、Prod 和 Debug 类。我在项目根文件夹中有一个 .env ,其中包含秘密。当我使用 Debug 进行配置时,它会读取密钥。但是当我将它设置为使用 Prod 时,它会抱怨:
RuntimeError:会话不可用,因为未设置密钥。将应用程序上的 secret_key 设置为唯一且机密的内容。
我没有使用会话。这是 Config.py 的代码:
from os import environ, path
from dotenv import load_dotenv
basedir = path.abspath(path.dirname(__file__))
load_dotenv(path.join(basedir, '.env'))
class Config:
SECRET_KEY = environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = environ.get('DB_URI')
class ProdConfig(Config):
FLASK_ENV = 'production'
DEBUG = False
TESTING = False
class DevConfig(Config):
FLASK_ENV = 'development'
DEBUG = True
TESTING = True
这里是 init.py
def create_app(config_class=ProdConfig):
flask_app = Flask(__name__)
flask_app.config.from_object(config_class)
这是我用来运行项目的 run.py:
from server import create_app
from server.config import DevConfig
app = create_app()
# app = create_app(DevConfig)
csrf.init_app(app)
if __name__ == '__main__':
app.run()
使用 DevConfig 时它可以正常工作,但不能使用 ProdConfig。谢谢
【问题讨论】:
标签: flask