web2py - 如何以编程方式注册用户?

时间:2016-02-19 11:33:12

标签: web2py

我想以编程方式注册用户,因此我可以与多个用户一起测试我的应用程序。

我想这样做的方式是:

if db( db.auth_user ).count() == 0:
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    for letter in alphabet:
        db.auth_user.validate_and_insert( first_name=letter , last_name=letter , email='%s@%s.com'%(letter , letter) , username=letter , password='qwer' )

然而,这并未设置有关组成员资格等的其他表格。

2 个答案:

答案 0 :(得分:3)

使用:

from gluon.storage import Storage
onaccept = auth.settings.register_onaccept.pop() # Disable registration callback.
alphabet = 'abcdefghijklmnopqrstuvwxyz'
for letter in alphabet:
    user = auth.register_bare(first_name=letter, last_name=letter,
                              email='%s@%s.com' % (letter, letter),
                              username=letter, password='qwer')
    user and onaccept(Storage(vars=user))
auth.settings.register_onaccept = [onaccept] # Restore registration callback.

以上暂时禁用register_onaccept回调,因为register_bare中的错误会阻止其正常工作。相反,它在注册后手动调用,传入user对象(这是完整的用户记录,包括id字段)。

答案 1 :(得分:1)

您可以查看herehere,基本上是为了添加用户并指定一个群组:

new_user_id = db.auth_user.insert(first_name="Admin",
                                  last_name="Username",
                                  email="mye...@address.com",
                                  password=db.auth_user.password.requires[0]('mypassword')[0])
auth.add_membership('admin', db.auth_user(new_user_id) )