2013-01-15 55 views
1

我试图将默认登录样式更改为基于用户名登录。为此,在db.py,我写道:如何处理用户名登录和注册?

from gluon.tools import Auth, Crud, Service, PluginManager, prettydate 
auth = Auth(db) 
crud, service, plugins = Crud(db), Service(), PluginManager() 
auth.define_tables(username=True, signature=False, migrate=False) 
auth_table=auth.settings.table_user 
auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username) 

当我试图为新用户注册,它给了我这个错误:

<class 'sqlite3.OperationalError'> no such column: auth_user.username 

我想知道如何正确处理。另外,对这些表格的公开和编址如何工作有一个很好的解释是非常有用的。我对此很新,发现它很混乱。

回答

1

如果您最初创建的Auth表没有用户名,那么auth_user表中将没有“用户名”字段。因为您有auth.define_tables(..., migrate=False),DAL将不会运行迁移以添加新字段。因此,请暂时更改迁移到True,以便添加该字段。

+0

谢谢!这解决了它!我对迁移有错误的想法,好像。我认为如果我想为不同的应用程序重复使用相同的数据库表,它会被设置为false。我不明白这将如何影响将主键从电子邮件地址更改为用户名。 –