首页 文章

web2py sqlform错误

提问于
浏览
0

我是web2py的新手,我正在努力解决它

我正在尝试创建注册和登录的东西 . 在模型中,我有以下代码,我为新用户创建tabel

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 回答

  • 1

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

    只需从控制器中删除 userdbauth 定义即可 .

相关问题