我刚刚开始关注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。
答案 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()
。