2011-07-06 11 views
3

私はweb2pyフォームを使用していますが、一部のフィールドのみがユーザーに表示されるようにしたい(修正済みのものは修正済みです)。編集可能、書き込み可能、​​読み込み専用のさまざまな組み合わせを作ってみましたが、無駄でした。私もweb2pyの本を見たが、それはまた不十分と思われる。もし誰かが私にこのことを教えることができれば素晴らしいだろう。Web2pyフォームのフィールドオプション

+1

コードを表示できますか? dbテーブルに基づいてSQLFORMまたはCrudフォームを使用している場合は、db.tablename.fieldname.writable = Falseに設定する必要があります(ただし、フォームが作成される前に実行する必要があります)。 FORMヘルパーを使用している場合やHTMLで手動でフォームを作成している場合は、入力タグに "readonly"属性を追加することができます(攻撃者によってハッキングされる可能性がありますが) 。 – 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) 
関連する問題