2011-07-06 7 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.create(db.some_table) 

또는

(즉, CRUD 형태가 액세스 할 수 있도록, 당신이 인증을 사용하지 않는 경우 CRUD에 대한 설정을 수정해야합니다) CRUD를 사용할 수 있습니다
SQLFORM(db.some_table)