我真的不明白它的问题是什么?我想在请求函数之前和之后使用Flask,否则我的会话不会关闭,然后我就会超时。这些是我的应用程序设置,请帮助我理解为什么我会得到" AttributeError:' _AppCtxGlobals'对象没有属性' db'":
app = Flask(__name__)
bcrypt = Bcrypt(app)
login_manager = LoginManager()
login_manager.init_app(app)
app.secret_key = 'somekey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost/database'
db = SQLAlchemy(app)
from models import *
login_manager.login_message = 'Please login first.'
login_manager.login_view = 'authenticate'
#################################
#################################
@login_manager.user_loader
def load_user(user_id):
"""user_loader - A decorator to mark the function responsible for loading a user from whatever data source we use."""
return User.query.filter(User.id == int(user_id)).first()
@app.before_request
def before_request():
g.db.connect()
g.user = current_user
@app.after_request
def after_request(response):
"""Close the database connection after each request"""
g.db.close()
return response
答案 0 :(得分:0)
您似乎正在尝试将Flask文档中的SQLite示例与Flask-SQLAlchemy扩展相结合,但两者并不相关。没有g.db
,您使用db
对象与数据库进行交互。
删除before_request
和after_request
功能。