제출된 폼의 확인 페이지를 구현하는 경우 폼의 input들을 일괄적으로 readonly 또는 disabled로 변경해야할 때가 있다.
보통은 렌더링 이후에 자바스크립트로 input값들의 disabled 속성을 true로 만드는데(input.disabled = true), 장고에서는 뷰에서 템플릿으로 폼을 생성하여 보내는 중간에 폼의 필드 속성을 변경하여 처음부터 disabled 된 채로 출력하게 하는 방법도 있어 이를 소개하고자 한다.
in views
for field in form.fields:
form.fields[field].widget.attrs['disabled'] = True
이렇게 하면 이 폼을 전달받은 템플릿에서 폼을 렌더링 할 때 이미 모든 input이 disabled된 채로 출력되어 별도의 스크립트 처리를 해줄 필요가 없다. 주의할 점은 뷰에서 field 접근 시 fields의 타입이 딕셔너리이므로 꼭 fields[필드명(키값)]으로 접근해줘야한다는 점이다. field.widget 으로는 접근이 불가능하다.
'개발지식 > Django' 카테고리의 다른 글
| [Python] 로그 파일 핸들러 2개(TimedRotatingFileHandler, RotatingFileHandler) 합쳐서 사용하는 방법 (0) | 2024.03.14 |
|---|---|
| [Django] Auth0에서 이메일 인증 여부(email_verified) 체크하기 (0) | 2023.01.02 |
| [Django] import-export 모듈의 활용(관리자에 엑셀 업/다운로드 기능 설치) (0) | 2023.01.02 |
| [Django] 빈 폼, 미완성 폼 출력 컨트롤하기 (empty_permitted) (0) | 2023.01.02 |