【问题标题】:Web2py form field optionsWeb2py 表单字段选项
【发布时间】:2011-07-06 13:10:02
【问题描述】:

我正在使用 web2py 表单,我希望某些字段仅对用户可见(已修复,无法编辑)。我尝试制作可编辑、可写、只读的各种组合,但没有用。我也查看了 web2py 的书,但这似乎还不够。如果有人能告诉我如何做到这一点,那就太好了。

【问题讨论】:

  • 你能显示你的代码吗?如果您使用基于 db 表的 SQLFORM 或 Crud 表单,您应该能够设置 db.tablename.fieldname.writable=False (尽管您必须在创建表单之前的某个时间这样做)。如果您正在使用 FORM 帮助程序或只是在 HTML 中手动创建表单,那么您可以将“只读”属性添加到输入标签(尽管这可能会被攻击者破解),或者只是在输入标签之外显示一个值.

标签: forms field web2py readonly


【解决方案1】:

您的意思是某些字段对所有访问者可见,而某些字段只有在登录时才可见?

如果是这样,那么有条件地构建您的表单:

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)

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2015-04-08
    • 2012-10-22
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多