1

我刚刚开始查看 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 是无。

4

1 回答 1

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().

于 2012-10-26T14:30:28.360 回答