当前位置: 首页 > 面试题库 >

AttributeError:“ _ AppCtxGlobals”对象在Flask中没有属性“ user”

万德海
2023-03-14
问题内容
@app.route('/login', methods = ['GET', 'POST'])
@oid.loginhandler
def login():
    if g.user is not None and g.user.is_authenticated():
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        session['remember_me'] = form.remember_me.data
        return oid.try_login(form.openid.data, ask_for = ['nickname', 'email'])
    return render_template('login.html', 
        title = "Sign In",
        form = form,
        providers = app.config['OPENID_PROVIDERS'])

但是,这给了我一个AttributeError,我将在下面粘贴StackTrace。这完全是我从示例来源中粘贴的错误。我确实使用PeeWee代替了SQLAlchemy,但是由于这段代码对数据库没有任何作用,但是我不知道为什么会这样。

有人知道我在这里做错什么吗?

Traceback (most recent call last):
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/flask_openid.py", line 446, in decorated
    return f(*args, **kwargs)
  File "/Users/kramer65/dev/repos/microblog/app/views.py", line 31, in login
    if g.user is not None and g.user.is_authenticated():
  File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
    return getattr(self._get_current_object(), name)
AttributeError: '_AppCtxGlobals' object has no attribute 'user'

问题答案:

g.user全局
如果你要注意的话,你会记得在登录视图功能中我们检查g.user以确定用户是否已经登录。要实现此目的,我们将使用before_requestFlask中的事件。before_request每次接收到请求时,所有装饰有功能的函数都会在查看函数之前运行。因此,这是设置g.user变量(文件app/views.py)的正确位置:

@app.before_request
def before_request():
    g.user = current_user

这就是全部。在current_user全球是由瓶,登录设置,所以我们只要把复制的g对象有更好的访问。这样,所有请求都可以访问登录的用户,甚至在模板内部也可以。

你的代码显然缺少此before_request处理程序。



 类似资料:
  • 问题内容: 我正在尝试通过以下文档设置此基本示例: http://flask.pocoo.org/docs/patterns/celery/ 但是到目前为止,我一直收到以下错误: AttributeError:“ Flask”对象没有属性“ user_options” 我正在使用芹菜3.1.15。 例: 回溯错误: 问题答案: “基于Flask Celery的后台任务”页面(http://flas

  • 问题内容: 我的flask登录有问题。填写登录表单并单击“提交”后,出现此错误: Flask-login AttributeError:“用户”对象没有属性“ is_active” 创建了一些测试用户。而且登录模板没有问题 追溯: My code in views: My model: 问题答案: 你应该在模型上进行子类化。你还应该添加一个user_loader

  • 问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。

  • 问题内容: 我如何解决此错误,我是从GitHub下载此代码的。 引发错误 请帮我解决这个问题! 我用了: 我得到这个错误。有人帮我,我只想让它工作为什么这么难? 问题答案: 我怀疑您从中复制代码的地方启用了急切执行功能,即在程序开始时调用了该位置。 您也可以这样做。希望能有所帮助。 更新:请注意,默认情况下,TensorFlow 2.0中启用了急切执行。因此,以上答案仅适用于TensorFlow

  • 问题内容: 下面的代码给出了错误: 码: 问题答案: 从代码中,我可以看到你希望允许用户下载pdf。 现在开始 去 http://localhost:5000

  • 问题内容: 当我尝试时,会发生错误: 我找到了带有pyelasticsearch.py 的链接https://github.com/toastdriven/pyelasticsearch/blob/master/pyelasticsearch.py​​#L424-469,但我不知道它是哪个版本。无论如何,该代码中没有购买我的pyelasticsearch.py​​。任何人都有相同的经历吗?感谢您的