当前位置: 移动技术网 > IT编程>脚本编程>Python > 解决Flask错误“TypeError: 'bool' object is not callable”

解决Flask错误“TypeError: 'bool' object is not callable”

2019年09月03日  | 移动技术网IT编程  | 我要评论

男子向烟瓶倒酒精 下一幕太神奇了,百里挑一背景音乐,妖精的尾巴全集下载

跟着欢迎进入flask大型教程项目!的教程学习flask,到了重构用户模型的时候,运行脚本后报错:

typeerror: 'bool' object is not callable

这是用户模型:

class user(db.model):
    id = db.column(db.integer, primary_key=true)
    nickname = db.column(db.string(64), index=true, unique=true)
    email = db.column(db.string(120), index=true, unique=true)
    posts = db.relationship('post', backref='author', lazy='dynamic')

    @property
    def is_authenticated(self):
        return true

    @property
    def is_active(self):
        return true

    @property
    def is_anonymous(self):
        return false

    def get_id(self):
        try:
            return unicode(self.id)  # python 2
        except nameerror:
            return str(self.id)  # python 3

    def __repr__(self):
        return '<user %r>' % (self.nickname)


这是调用的时候的代码:

from flask import render_template, flash, redirect, session, url_for, request, g
from flask.ext.login import login_user, logout_user, current_user, login_required
from app import app, db, lm, oid
from .forms import loginform
from .models import user

@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'])

解决方法:

按照参考资料里面的说法:
is_authenticated是属性而不是方法,把括号去掉就可以了。书里这一段有两处印刷错误,请参照git源码。

把出错的地方:
if g.user is not none and g.user.is_authenticated():
修改为
if g.user is not none and g.user.is_authenticated:
然后就不报错了。

 

 转自:https://www.cnblogs.com/zmdComeOn/p/11452652.html

 

 

 

 

 

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网