V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lonisletend
V2EX  ›  Flask

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

  •  
  •   lonisletend · 2020-07-14 19:11:08 +08:00 · 4403 次点击
    这是一个创建于 1603 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于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.

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

    • 项目结构

    • init.py

    • user.py (继承了flask_loginUserMixin类)

    • 报错信息

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

    第 1 条附言  ·  2020-07-15 14:25:46 +08:00
    问题解决了, 是因为在另外一个地方也初始化了 LoginManager

    ![]( https://i.loli.net/2020/07/15/nhiDwXrNgdkE8eR.png)

    是个人粗心大意了, 不关项目结构什么事儿.
    7 条回复    2020-07-14 20:09:57 +08:00
    ipwx
        1
    ipwx  
       2020-07-14 19:22:00 +08:00
    在 create_app 里面

    from . import auth

    虽然吧,我感觉你在 create_app() 里面再创建这个 app,多少有点反 flask pattern 。而且我看不出来这么做的好处。
    CallMeReznov
        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
    CallMeReznov
        3
    CallMeReznov  
       2020-07-14 19:27:21 +08:00
    我之前学习 FLASK 写 demo 的时候也都是胡写..反正我都引用进去就能用了,属实 Magic!
    lonisletend
        4
    lonisletend  
    OP
       2020-07-14 19:43:16 +08:00
    @ipwx 我的 auth 是在 routes 下的, 所以按你的意思我 from .routes import auth, 然而还是报错
    lonisletend
        5
    lonisletend  
    OP
       2020-07-14 19:51:20 +08:00
    @CallMeReznov 我也尝试了一通引用, 可是并不好使:(
    Flask 确实太灵活了, 以前我也是__init__.py 下 app=Flask(__name__) 然后到处 from app import, 这种写法在 Pycharm 里能被纠错烦死, 正好最近想写个新的项目了, 所以想理理 Flask 项目的结构, 按大神建议的试一试, 结果才学疏浅, 这不翻车了么:)
    renmu123
        6
    renmu123  
       2020-07-14 20:03:00 +08:00 via Android
    我才是 login_required 函数里获取不到 current_user
    lonisletend
        7
    lonisletend  
    OP
       2020-07-14 20:09:57 +08:00
    @renmu123 可以的, 我以前都这么写, 而且也试了直接在 /test 请求里用 current_user 也是一样的错误
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1644 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.