web2py添加用户名验证

时间:2012-10-26 10:50:57

标签: python authentication web2py

我刚刚开始关注web2py并希望使用用户名而不是电子邮件来登录。

我添加了以下内容: -

auth.define_tables(username=True, signature=False)

我需要添加验证器,但我不知道放在哪里(听起来很傻)。

我尝试了一些选项并查看了许多示例 - 但它们都创建了一个新表而不是使用现有的auth_user。 我试过了: -

auth_table = auth.settings.table_user
auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username)
auth.define_tables(username=True, signature=False)

但是auth_table是None。

1 个答案:

答案 0 :(得分:3)

在您致电auth.settings.table_user之后,

auth.define_tables()才会存在。所以,只需更改代码的顺序:

auth.define_tables(username=True, signature=False)
auth_table = auth.settings.table_user
auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username)

注意,如果使用db定义DAL(..., lazy_tables=True)对象,则auth.settings.table_user将不存在。在这种情况下,您可以改为auth_table = auth.table_user()