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