Peewee Flask试图从BooleanField返回数据



我正试图返回UserTable模型中用户的confirmed BooleanField(这样我以后就可以拒绝访问某些路由),代码为:

型号.py

class UserTable(UserMixin, Model):
    email = CharField(unique=True)
    password = CharField()
    confirmed = BooleanField()
    class Meta:
        database = db

app.py

@app.route('/isconfirmed/<email>')
def isconfirmed(email):
    return models.UserTable.get(models.UserTable.email == email).confirmed

然而,当我尝试此操作时,我会收到:TypeError: 'bool' object is not callable

我尝试使用访问emailpassword

CCD_ 6等,并且它工作得很好。我不明白为什么它不能从BooleanField返回True或False???

如果有任何相关性/帮助的话,我会使用Postgres作为我的数据库。

非常感谢您的帮助!!!

以下是正在发生的事情。

models.UserTable.get(models.UserTable.email == email).confirmed是一个合法的查询,它返回一个布尔值TrueFalse

现在,参考视图响应类型处理逻辑:

视图函数的返回值自动转换为一个响应对象。如果返回值是字符串,则为转换为以字符串为响应主体的响应对象200 OK错误代码和text/html/mimetype。Flask的逻辑适用于将返回值转换为响应对象如下:

  • 如果返回正确类型的响应对象从视图返回。

  • 如果是字符串,则会创建一个响应对象使用该数据和默认参数。

  • 如果返回元组元组中的项可以提供额外的信息。这样的元组必须形式(响应、状态、标题)中至少有一个项目在元组中。状态值将覆盖状态代码标头可以是附加标头值的列表或字典。

  • 如果这些都不起作用,Flask将假定返回值是有效的WSGI应用程序,并将其转换为响应对象。

Flask看到从视图返回的布尔值时,它试图将其视为WSGI应用程序实例,但失败了。

如果TrueFalse是您想要从视图返回的内容,则必须强制它为字符串:

@app.route('/isconfirmed/<email>')
def isconfirmed(email):
    return str(models.UserTable.get(models.UserTable.email == email).confirmed)

另请参阅此处解决的相关问题:

  • 为什么json.dumps()在Flask中是必须的

最新更新