首页 文章

web2py SQLFORM更新表单问题

提问于
浏览
0

我正在尝试为我的应用程序创建一个简单的更新配置文件更新表单 . 我创建了一个名为“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 回答

  • 1

    如果您要编辑用户自己的 Profiles ,您可以执行以下操作:

    @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())
    

相关问题