首页 > 解决方案 > 随机时间没有 user_loader 异常(重置时消失)

问题描述

我在调试模式下运行烧瓶,并且经常,当我进行更改并重新加载页面时,我会抛出一个No user_loader异常

例外:没有为此 LoginManager 安装 user_loader。有关更多信息,请参阅 https://flask-login.readthedocs.io/en/latest/#how-it-works。

user_loader在我定义了我的班级后,我写了一篇文章User(它被移动了):

@login.user_loader
def load_user(id):
    return User.query.get(int(id))

每次刷新页面时,此错误都会持续存在,直到我重置烧瓶应用程序本身,尽管处于调试模式。然后错误消失。

这是一个已知的错误还是可以预料的事情?

更新

所以自从我发布这个问题以来已经有一段时间了,但它刚刚得到了一个赞成票,所以有人遇到了类似的问题。我在这个问题上获得了更多经验,所以我可能能够稍微阐明这个问题:

在对我的应用程序进行重大重构后,我开始遇到类似的异常(不记得确切的异常),基本上是说找不到给定的模块(我相信这是一条路线)。当我对 SQLA 模型进行某些更改或某些其他类型的广泛更改时,它似乎最常发生。

我希望我能更清楚,但错误是神秘的,它经常出现在我最不期望的时候。当然,可以对导致调试模式服务器失败并需要重新启动的代码进行某种更改。

我知道这仍然不是很有启发性,但它肯定比这篇文章的前半部分更准确。

标签: flaskflask-login

解决方案


我最近遇到了这个问题。我也收到了这个错误:

Exception: No user_loader has been installed for this LoginManager. Refer to https://flask-login.readthedocs.io/en/latest/#how-it-works for more info.

这是我对 user_loader 函数的声明:

    @login_manager.user_loader
    def load_user(user_id):
        # since the user_id is just the primary key of our user table, use it in the query for the user
        return User.query.get(int(user_id))

事实证明,当我从教程中复制粘贴时,我在AFTER 之后粘贴了 load_user 函数:

return app

换句话说,代码的执行从未达到我的 user_loader 声明。确保您的 return 声明在您的 user_loader 声明之后。


推荐阅读