Web2py - 尝试从行对象中获取值而不使用“for”句子

时间:2012-08-21 22:41:00

标签: python web2py

我正在尝试编辑用户的群组成员资格,我在我的控制器中:

def change_membership():

if request.vars.id:

    row = db(db.auth_membership.user_id == request.vars.id).select()
    id = row[0].id  
    form = SQLFORM(db.auth_membership,
                               id,
                               fields=['group_id'],
                               _action=URL()
                               )
if form.process().accepted:
    ...redirect back to user list

if form.errors:
    response.flash = 'form has errors'

return dict(form=form)

但它没有用,我得到了:  列表索引超出范围

我知道只有一行,但我不明白为什么它似乎是空的..

提前致谢
基督教

1 个答案:

答案 0 :(得分:2)

出色!

非常感谢Anthony和Massimo。

它保存了我的一天,现在所有人都在使用request.get_vars.id而不是request.vars.id

参考:

2012/8/22 Anthony写道: 是。注意,web2py将request.get_vars中的GET变量和request.post_vars中的POST变量存储起来。它在request.vars中存储GET和POST变量。如果get_vars和post_vars都具有相同名称的变量,则会将其值放在request.vars中的列表中。只需更改代码即可使用request.get_vars.id而不是request.vars.id。

2012/8/22 Massimo Di Pierro写道: 你有两个id字段。一个在request.get_vars.id中(来自url),另一个在request.post_vars.id中(来自表单提交)。