我正在使用web2py表单,我希望某些字段仅对用户可见(已修复,无法编辑)。我尝试制作可编辑,可写,只读的各种组合,但没有用。我也查看了web2py书,但这似乎也不够。如果有人能告诉我如何做到这一点会很棒。
答案 0 :(得分:2)
您的意思是某些字段对所有访问者都可见,某些字段只有在登录后才可见?
如果是这种情况,请有条件地构建表单:
form_fields = [
Field('pubfield'),
Field('pubfield2')
]
if auth.user: # This is true if the end-user is logged in and you're using the built-in auth
form_fields.append(Field('private_field'))
return dict(form=FORM(form_fields))
除非您不是在谈论登录用户,而只是想让字段可见,但不能编辑。然后,像你试过的那样使用writable = False,但我认为你必须使用crud.create / crud.update或SQLFORM / SQLFORM.factory(后者不需要数据模型)
SQLFORM.factory(Field('my_readable_field', writable=False))
如果表单基于数据库,您可以使用CRUD(如果您不使用身份验证,则需要修改CRUD的设置,以便可以访问CRUD表单)
crud.create(db.some_table)
或
SQLFORM(db.some_table)