Web2py form field options

2019-07-07 08:32发布

I am using web2py forms and i want to have some fields only visible to user (as fixed which cannot be edited). I tried making various combinations of editable, writeable, readonly but was of no use. I looked into web2py book too but that also seems insufficient. It would be great if someone can tell me how to do this.

1条回答
对你真心纯属浪费
2楼-- · 2019-07-07 09:18

You mean some fields visible to all visitors and some fields visible only if logged in?

If that's the case, then build your form conditionally:

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

Unless you're not talking about logged in users, and just want to make the fields be visible, but not editable. Then, use writable=False like you tried, but I think you have to either use crud.create/crud.update or SQLFORM / SQLFORM.factory (the latter does not require a data model)

SQLFORM.factory(Field('my_readable_field', writable=False))

If you the form is based off of a database, you can use CRUD (you'll need to modify the settings for CRUD if you're not using authentication, so that CRUD forms are accessible)

crud.create(db.some_table)

or

SQLFORM(db.some_table)
查看更多
登录 后发表回答