Python 会话不可用,因为没有在应用程序工厂设置密钥
当我尝试使用app factory设置应用程序时,登录我的用户时遇到问题。该应用程序通过配置文件进行配置,当我在create_app()之前使用print语句时,它实际上会向我显示密钥。但是,当我运行应用程序并在登录屏幕中输入用户名时,会出现运行时错误: RuntimeError:由于未设置密钥,会话不可用。将应用程序上的密钥设置为唯一和机密的内容 谁能给我指一下正确的方向吗?我似乎无法理解这件事 app/\uuuu init\uuuuu.pyPython 会话不可用,因为没有在应用程序工厂设置密钥,python,session,flask,secret-key,Python,Session,Flask,Secret Key,当我尝试使用app factory设置应用程序时,登录我的用户时遇到问题。该应用程序通过配置文件进行配置,当我在create_app()之前使用print语句时,它实际上会向我显示密钥。但是,当我运行应用程序并在登录屏幕中输入用户名时,会出现运行时错误: RuntimeError:由于未设置密钥,会话不可用。将应用程序上的密钥设置为唯一和机密的内容 谁能给我指一下正确的方向吗?我似乎无法理解这件事 app/\uuuu init\uuuuu.py from flask import Flask
from flask import Flask
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
db.init_app(app)
app.config.from_object('config.Config')
with app.app_context():
from .auth import auth_routes
app.register_blueprint(auth_routes.auth_routes)
db.create_all()
return app
环境署署长
config.py
from os import environ
class Config:
SESSION_TYPE = environ.get('SESSION_TYPE')
SECRET_KEY = environ.get('SECRET_KEY')
将设置从
.env
传送到Flask实例有两个要求:首先,需要安装python dotenv
。其次,您需要使用flask
命令或通过调用app.run()
的路径启动应用程序
我发现在我的配置中显式更安全
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
SECRET_KEY = os.environ.get('APP_SECRET_KEY')
...
这避免了在uwsgi
等下部署时的混乱
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
SECRET_KEY = os.environ.get('APP_SECRET_KEY')
...