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