web2py sqlform错误

时间:2012-08-22 12:18:50

标签: web2py

我是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编写的代码。其他

感谢您提出任何建议或简短解释。

再见

1 个答案:

答案 0 :(得分:1)

您不应重复控制器中userdbauth的定义。模型文件在每个请求(条件模型文件除外)上执行,控制器在包含模型中定义的任何对象的环境中执行。在您的控制器中,您使用一个新对象覆盖原始userdb对象,并且您再次定义auth但不重新创建“用户”表 - 因此不再有“用户” “userdb上的表格。

只需从控制器中删除userdbauth定义。