3
我使用的是web2py表單,我希望有一些只對用戶可見的字段(固定不能編輯)。我嘗試過編輯,可寫,只讀的各種組合,但沒用。我也查看了web2py書籍,但這似乎還不夠。如果有人能告訴我如何做到這一點,那將是非常棒的。Web2py表單字段選項
我使用的是web2py表單,我希望有一些只對用戶可見的字段(固定不能編輯)。我嘗試過編輯,可寫,只讀的各種組合,但沒用。我也查看了web2py書籍,但這似乎還不夠。如果有人能告訴我如何做到這一點,那將是非常棒的。Web2py表單字段選項
您的意思是一些字段對所有訪問者都可見,而一些字段只有在登錄後纔可見?
如果是這樣的話,那麼建立你的形式有條件:
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))
除非你是不是在談論登錄的用戶,只是想使字段可見,但無法編輯。然後,使用可寫=假像你這樣試過,但我認爲你必須要麼使用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)
你能展示你的代碼嗎?如果你使用的是基於數據庫表的SQLFORM或Crud表單,你應該可以設置db.tablename.fieldname.writable = False(儘管你必須在表單創建之前這樣做)。如果您使用的是FORM幫助程序或僅使用HTML手動創建表單,那麼您可以將「只讀」屬性添加到輸入標記(儘管這可能會被攻擊者攻擊),或者只是在輸入標記之外顯示一個值。 – Anthony