마이의 개발 블로그

[Django] 뷰에서 폼의 모든 필드를 disabled로 변경하기 본문

개발지식/Django

[Django] 뷰에서 폼의 모든 필드를 disabled로 변경하기

개발자마이 2023. 1. 2. 12:18
반응형

제출된 폼의 확인 페이지를 구현하는 경우 폼의 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 으로는 접근이 불가능하다.

반응형
Comments