关于 Flask-Login 的 user_loader 回调方法的问题

2020-07-14 19:11:08 +08:00
 lonisletend

关于Flask-Loginuser_loader回调方法的问题

前两天看到 lepture 关于 Flask 项目结构的这篇文章https://lepture.com/en/2018/structure-of-a-flask-project, 动手实践一下, 但是遇到个 Flask-Login 的问题, user_loader方法放在哪儿都不好使, 总是报Exception: Missing user_loader or request_loader. Refer to http://flask-login.readthedocs.io/#how-it-works for more info.

我认为的是在项目启动之后login_manager已经和app关联了, 所以在 router 中引用的login_manager就可以设置user_loader回调方法了, 但是不管我把它放哪儿, 始终都找不到, 在引用current_user的时候就报错 Exception: Missing user_loader or request_loader. Refer to http://flask-login.readthedocs.io/#how-it-works for more info.

下面是项目结构, 部分文件截图以及报错信息, 路过的大神麻烦帮忙看看是什么问题.

麻烦大神们指教或者有什么思路说说, 先谢过.

3802 次点击
所在节点    Flask
7 条回复
ipwx
2020-07-14 19:22:00 +08:00
在 create_app 里面

from . import auth

虽然吧,我感觉你在 create_app() 里面再创建这个 app,多少有点反 flask pattern 。而且我看不出来这么做的好处。
CallMeReznov
2020-07-14 19:25:47 +08:00
from flask_login import LoginManager, current_user, login_user, login_required ,UserMixin ,login_user ,logout_user
CallMeReznov
2020-07-14 19:27:21 +08:00
我之前学习 FLASK 写 demo 的时候也都是胡写..反正我都引用进去就能用了,属实 Magic!
lonisletend
2020-07-14 19:43:16 +08:00
@ipwx 我的 auth 是在 routes 下的, 所以按你的意思我 from .routes import auth, 然而还是报错
lonisletend
2020-07-14 19:51:20 +08:00
@CallMeReznov 我也尝试了一通引用, 可是并不好使:(
Flask 确实太灵活了, 以前我也是__init__.py 下 app=Flask(__name__) 然后到处 from app import, 这种写法在 Pycharm 里能被纠错烦死, 正好最近想写个新的项目了, 所以想理理 Flask 项目的结构, 按大神建议的试一试, 结果才学疏浅, 这不翻车了么:)
renmu123
2020-07-14 20:03:00 +08:00
我才是 login_required 函数里获取不到 current_user
lonisletend
2020-07-14 20:09:57 +08:00
@renmu123 可以的, 我以前都这么写, 而且也试了直接在 /test 请求里用 current_user 也是一样的错误

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690025

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX