2011-07-06 42 views
3

我使用的是web2py表單,我希望有一些只對用戶可見的字段(固定不能編輯)。我嘗試過編輯,可寫,只讀的各種組合,但沒用。我也查看了web2py書籍,但這似乎還不夠。如果有人能告訴我如何做到這一點,那將是非常棒的。Web2py表單字段選項

+1

你能展示你的代碼嗎?如果你使用的是基於數據庫表的SQLFORM或Crud表單,你應該可以設置db.tablename.fieldname.writable = False(儘管你必須在表單創建之前這樣做)。如果您使用的是FORM幫助程序或僅使用HTML手動創建表單,那麼您可以將「只讀」屬性添加到輸入標記(儘管這可能會被攻擊者攻擊),或者只是在輸入標記之外顯示一個值。 – Anthony

回答

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

除非你是不是在談論登錄的用戶,只是想使字段可見,但無法編輯。然後,使用可寫=假像你這樣試過,但我認爲你必須要麼使用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)