flask学习问题
为了自定义匿名用户的需求,我在models中设置了一个类:
class MyAnonymousUser(AnonymousUserMixin):
def can(self, permissions):
return False
def is_administrator(self):
return False
login_manager.anonymous_user = MyAnonymousUser
Flask运行遇到错误:'AnonymousUserMixin'
对象没有属性'can'
,在 View 中:
@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'))
我不明白为什么 current_user 不属于 MyAnonymousUser。
这是我的 origin code
感谢您的帮助
最佳答案
您似乎认为通过将登录管理器分配给您的类,您将继承您创建的方法。这不是代码中发生的情况。您实际上所做的是覆盖已提供的 login_manager.anonymous_user 功能。
您的函数实际上应该在包含用户的模型中定义。看起来好像您正在尝试检查用户是否是匿名的。以下是我的编码建议。
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'))
关于python - 属性错误: 'AnonymousUserMixin' object has no attribute 'can' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580650/