我是web2py的新手,我正在努力解决这个问题
我正在努力创建注册和登录的东西。在模型中,我有以下代码,我为新用户创建表格
usersdb = DAL('postgres://postgres:postgres@localhost/'+ request.vars['school'], migrate=True)
auth = Auth(usersdb, hmac_key=Auth.get_or_create_key())
usersdb.define_table(
'users',
Field('first_name', length=128, default=''),
Field('last_name', length=128, default=''),
Field('email', length=128, default='', unique=True),
Field('address', length=256, default=''),
Field('postcode', length=128, default=''),
Field('city', length=128, default=''),
Field('password', 'password', length=512, readable=False, label='Password'),
Field('registration_key', length=512, writable=False, readable=False, default=''),
Field('reset_password_key', length=512, writable=False, readable=False, default=''),
Field('registration_id', length=512, writable=False, readable=False, default=''),
format='%(first_name)s %(last_name)s')
所以现在在控制器中我有以下代码:
usersdb = DAL('postgres://postgres:postgres@localhost/'+ request.vars['school'], migrate=True)
auth = Auth(usersdb, hmac_key=Auth.get_or_create_key())
auth.settings.registration_requires_approval = True
form = SQLFORM(usersdb.users)
if form.process(session=None, formname='test').accepted:
response.flash = 'form accepted'
elif form.errors:
response.flash = 'form has errors'
else:
response.flash = 'please fill the form'
# Note: no form instance is passed to the view
#set sample validator (do not allow empty nor duplicate names)
return dict(form=form,config=config)
SQLFORM(usersdb.users)中出现错误。 '用户'
我不知道这些东西究竟是如何工作的(将数据库连接到控制器)。我正在攻击由smb编写的代码。其他
感谢您提出任何建议或简短解释。
再见
答案 0 :(得分:1)
您不应重复控制器中userdb
或auth
的定义。模型文件在每个请求(条件模型文件除外)上执行,控制器在包含模型中定义的任何对象的环境中执行。在您的控制器中,您使用一个新对象覆盖原始userdb
对象,并且您再次定义auth
但不重新创建“用户”表 - 因此不再有“用户” “userdb
上的表格。
只需从控制器中删除userdb
和auth
定义。