【问题标题】:AttributeError: 'AnonymousUserMixin' object has no attribute 'can'AttributeError: 'AnonymousUserMixin' 对象没有属性 'can'
【发布时间】:2018-12-02 13:22:27
【问题描述】:

烧瓶学习问题

为了给匿名用户定制需求,我在models中设置了一个类:

    class MyAnonymousUser(AnonymousUserMixin):    
        def can(self, permissions):
            return False
        def is_administrator(self):
            return False
    login_manager.anonymous_user = MyAnonymousUser

Flask 运行遇到错误:'AnonymousUserMixin' object has no attribute 'can',在视图中:

@main.route('/', methods=['GET', 'POST'])
    def index():
        form = PostForm()
        if current_user.can(Permission.WRITE_ARTICLES) and form.validate_on_submit():
            post = Post(body=form.body.data,
                        author=current_user._get_current_object())
            db.session.add(post)
            db.session.commit()
            return redirect(url_for('.index'))

我不明白为什么 MyAnonymousUser 没有归属 current_user。

这是我的origin code

感谢您的帮助

【问题讨论】:

    标签: python python-3.x flask flask-login


    【解决方案1】:

    您似乎假设通过将登录管理器分配给您的类,您将继承您创建的方法。这不是代码中发生的事情。你实际上在做的是覆盖已经提供的 login_manager.anonymous_user 的功能。

    Check the documentation here

    您的函数实际上应该在包含您的用户的模型中定义。似乎您正在尝试检查用户是否是匿名的。所以下面是我的编码建议。

    UserModel(db.Model, UserMixin):
    
        def can(self, permissions):
            return False
    
        def is_administrator(self):
            return False
    
    @main.route('/', methods=['GET', 'POST'])
    def index():
        form = PostForm()
        if current_user.is_active and form.validate_on_submit():
    
            if current_user.can(Permission.WRITE_ARTICLES):
                post = Post(body=form.body.data,
                            author=current_user._get_current_object())
                db.session.add(post)
                db.session.commit()
                return redirect(url_for('.index'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多