这是一个创建于 2006 天前的主题,其中的信息可能已经有所发展或是发生改变。
关于Flask-Login的user_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.
下面是项目结构, 部分文件截图以及报错信息, 路过的大神麻烦帮忙看看是什么问题.
- user.py (继承了
flask_login的UserMixin类)
麻烦大神们指教或者有什么思路说说, 先谢过.
(追記) (追記ここまで)
第 1 条附言 · 2020 年 7 月 15 日
7 条回复 • 2020年07月14日 20:09:57 +08:00
ipwx
1
ipwx 2020 年 7 月 14 日
在 create_app 里面
from . import auth
虽然吧,我感觉你在 create_app() 里面再创建这个 app,多少有点反 flask pattern 。而且我看不出来这么做的好处。
CallMeReznov
2
CallMeReznov 2020 年 7 月 14 日
from flask_login import LoginManager, current_user, login_user, login_required ,UserMixin ,login_user ,logout_user
CallMeReznov
3
CallMeReznov 2020 年 7 月 14 日
我之前学习 FLASK 写 demo 的时候也都是胡写..反正我都引用进去就能用了,属实 Magic!
lonisletend
4
lonisletend 2020 年 7 月 14 日
@
ipwx 我的 auth 是在 routes 下的, 所以按你的意思我 from .routes import auth, 然而还是报错
lonisletend
5
lonisletend 2020 年 7 月 14 日
@
CallMeReznov 我也尝试了一通引用, 可是并不好使:(
Flask 确实太灵活了,
以前我也是__init__.py 下 app=Flask(__name__) 然后到处 from app import, 这种写法在 Pycharm 里能被纠错烦死, 正好最近想写个新的项目了, 所以想理理 Flask 项目的结构, 按大神建议的试一试, 结果才学疏浅, 这不翻车了么:)
(追記) (追記ここまで)
renmu123
6
renmu123 2020 年 7 月 14 日 via Android
我才是 login_required 函数里获取不到 current_user
lonisletend
7
lonisletend 2020 年 7 月 14 日
@
renmu123 可以的, 我以前都这么写, 而且也试了直接在 /test 请求里用 current_user 也是一样的错误
(追記) (追記ここまで)