2012-03-07 7 views

답변

12

당신이 HTML/XHTML의 <input readonly> 속성에 대해 이야기하고 있다고 가정하겠습니다. 귀하가 링크 한 토론 스레드에 관한 내용은 아닙니다. (연결된 스레드는 전달 된 양식 입력을 무시하는 방법과 관련된 하위 수준의 문제입니다.)

readonly 특성 (실제로 필드의 모든 특성)을 설정하는 방법은 템플릿의 키워드 인수로 사용됩니다.

{{ form.myfield(readonly=true) }} 

을 그리고 XHTML 또는 0.6.3 이전의 WTForms의 버전 : 신사를 사용하는 경우,이 (HTML5)과 같은

{{ form.myfield(readonly="readonly") }} 

그냥 '읽기 전용'속성은 힌트이므로주의 사용자가 제출 한 내용에 영향을 미치지 않습니다. 즉, 악의적 인 사용자 (또는 사용자 정의 JS a la greasemonkey 또는 JS 콘솔 또는 DOM 트리가있는 브라우저를 사용하는 사용자)는 읽기 전용 속성이 설정되었는지 여부에 관계없이 필드 값을 변경하는 POST 요청을 생성 할 수 있습니다. 입력 태그.

이러한 이유 때문에 readonly 속성은 사용자 경험을 수정하는 옵션 (예 : JS를 사용하여 일부 이벤트/동작을 기반으로 필드를 비활성화하는 옵션)으로 유용하며 '읽기 전용'필드에서 오는 입력은 no입니다. 다른 폼 입력보다 더 신뢰할 수 있습니다.

+13

양식을 선언 할 때 kwargs를 위젯이나 다른 것으로 전달할 수없는 것처럼 보입니다. – coleifer

2
https://wtforms-components.readthedocs.org/en/latest/#

from wtforms import Form, DateField, TextField 
from wtforms_components import TimeField, read_only 

class EventForm(Form): 
    name = TextField('Name') 
    start_date = DateField('Start date') 
    start_time = TimeField('Start time') 

    def __init__(self, *args, **kwargs): 
     super(EventForm, self).__init__(*args, **kwargs) 
     read_only(self.name) 
3

용액 양식 필드 선언 render_kw를 사용한다.

my_field = fields.StringField('Label', render_kw={'readonly': True}) 
+0

Jinja2에서 액세스하려면 다음을 수행하십시오. {% if form.my_field.render_kw.readonly} 읽기 전용 blabla {% endif %} – techniao