当FLASK_ENV="生产"时烧瓶不读取Secret_key



我有一个简单的Flask应用程序配置文件配置,Prod和调试类。我有一个。env在项目根文件夹,包含秘密。当我使用调试配置时,它读取密钥。但是当我将它设置为使用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
initpy
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。谢谢你

from os import environ, path
from dotenv import load_dotenv
basedir = path.abspath(path.dirname(__file__))
load_dotenv(path.join(basedir, '.env'))

class Config(object):
SECRET_KEY = environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = environ.get('DB_URI')
class ProdConfig(Config):
SECRET_KEY = environ.get('SECRET_KEY_FOR_PROD')
FLASK_ENV = 'production'
DEBUG = False
TESTING = False
class DevConfig(Config):
FLASK_ENV = 'development'
DEBUG = True
TESTING = True

app.py

def create_app():
flask_app = Flask(__name__)
flask_app.config.from_object(config.ProdConfig)

相关内容

最新更新