烧瓶学习问题
为了满足匿名用户的自定义要求,我在模型中设置了一个类:
class MyAnonymousUser(AnonymousUserMixin):
def can(self, permissions):
return False
def is_administrator(self):
return False
login_manager.anonymous_user = MyAnonymousUser
烧瓶运行遇到错误:在视图中,'AnonymousUserMixin'
对象没有属性'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
感谢您的帮助
答案 0 :(得分:0)
似乎您假设通过将登录管理器分配给您的类,就可以继承您创建的方法。这不是代码中发生的事情。您实际上正在做的是覆盖已经提供的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'))