web2py SQLFORM更新表单问题

时间:2013-12-04 18:28:07

标签: web2py

我正在尝试为我的应用程序创建一个简单的更新配置文件更新表单。我创建了一个名为“person”的自定义表来保存各个用户,并成功创建了一个注册页面/表单和登录页面/表单。但是,我在创建配置文件更新表单时遇到了困难。

根据web2py的书,我应该可以做类似的事情:

def profile():
    record = db.person(1)
    form = SQLFORM(db.person, record)
    if form.process().accepted:
        response.flash = "HEY"
    elif form.errors:
        response.flash = "HO"
    return dict(selected="progress", username=auth.user.username, form=form)

但页面只显示“无”

奇怪的是我将代码更改为:

def profile():
return dict(selected="progress", username=auth.user.username, form=db.person[1])

“form”键下的数据是我试图从数据库中获取的行。

因此,当我尝试在我的代码的第一次再现中查询数据库时,我得到“无”作为回报。根据web2py书,这意味着没有找到该行。但是,当我立即返回查询时,就像我的代码的第二次再现一样,我成功地检索了所需的行。

我做错了什么?

以下是视图代码:

{{extend 'arlayout.html'}}
<div id="progress" class="main_view">
{{=form}}
</div>

1 个答案:

答案 0 :(得分:1)

如果您正在尝试编辑用户自己的个人资料,您可以执行以下操作:

@auth.requires_login()
def profile():
    return dict(form=auth.profile())

如果您尝试编辑其他用户的个人资料,可能需要限制对特定用户组的访问权限:

@auth.requires_memebership('profile-editors')
def profile():
    user_id = request.args(0,cast=int,default=auth.user.id)
    return dict(form=SQLFORM(db.auth_user,user_id).process())