目前,我正在使用web2py制作网络应用程序。
我想要做的是在用户登录时创建帐户。
我知道在“auth()”中,有“http://.../[app]/default/user/register”。
如果用户没有登录,则此“注册”将作为“注册”。 但是,如果用户已经登录,则“注册”将作为“更改帐户信息”。
即使我已经登录,有没有办法让“注册”为“注册”?
由于
答案 0 :(得分:0)
在这种情况下,您可能不希望使用auth.register()
,因为这是针对自己注册的用户。相反,你可以尝试这样的东西(在控制器文件中):
def add_user():
form = SQLFORM(db.auth_user,
fields=['first_name', 'last_name', 'email', 'password'])
if form.validate():
user = auth.get_or_create_user(form.vars, login=False, get=False)
response.flash = 'User %s created' % user.id if user else 'User already exists'
return dict(form=form)
与.process()
不同,默认情况下,.validate()
方法不会在数据库中插入任何数据。在这种情况下,我们通过auth.get_or_create_user()
进行插入。我们必须设置login=False
以便登录不会切换到新帐户,我们设置get=False
以便在用户已经存在的情况下返回None
(允许特殊错误消息到在那种情况下显示。)