✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명
📌 목표
self.fields[field] 구문이 왜 이렇게 쓰이는지, 초보자가 헷갈리는 포인트를 비유와 함께 정확하게 이해하는 것!
1️⃣ 원래 코드 구조
for field in ('password1', 'password2'):
self.fields[field].widget.attrs['class'] = 'form-control'
- 목적: password1, password2 필드의 입력창을 Bootstrap 스타일로 꾸미기
- field는 문자열이 들어있는 변수 ('password1', 'password2')
- self.fields는 장고 폼 내부의 필드 딕셔너리
- self.fields[field]는 결국 self.fields['password1'], self.fields['password2']와 같은 의미
2️⃣ 초보자가 헷갈리는 이유
비유로 많이 쓰는:
장난감박스 = {
'곰인형': 곰인형객체,
'로봇': 로봇객체
}
장난감박스['곰인형']
이걸 보면, "그럼 진짜 코드도 self.fields['password1']처럼 써야 하는 거 아냐?" 하고 헷갈리게 됨!
3️⃣ 정확한 비유 코드
장난감박스 = {
'곰인형': 곰인형객체,
'로봇': 로봇객체
}
for 장난감이름 in ('곰인형', '로봇'):
print(장난감박스[장난감이름])
➡️ 이게 정확히 장고 코드의 구조와 같음!
즉,
for field in ('password1', 'password2'):
self.fields[field]
는
for 장난감이름 in ('곰인형', '로봇'):
장난감박스[장난감이름]
이거랑 완전히 같은 구조!
4️⃣ 요약 정리
항목 설명
self.fields | 장고 폼의 모든 필드 딕셔너리 |
field | for문에서 반복되는 문자열 ('password1', 'password2') |
self.fields[field] | 해당 키의 필드 객체 꺼내기 |
비유 | 장난감박스[장난감이름] 과 같은 구조 |
5️⃣ 기억해둘 팁 🧠
- self.fields['password1']처럼 직접 쓸 수도 있지만,
- 반복문으로 돌릴 땐 변수(field)를 사용해서 self.fields[field]라고 접근하는 것임!
- 딕셔너리에서 값을 꺼낼 때, key에 변수도 사용할 수 있다!
✅ 결론
self.fields[field]는 결국 self.fields['password1']처럼
특정 키를 꺼내는 것과 같고,
단지 그 키가 변수로 표현되어 있다는 점만 다르다.
비유는 비유일 뿐! 정확한 구조는 항상 딕셔너리 key-value 관계를 기준으로 이해하자 💪
'기술블로그-Django편' 카테고리의 다른 글
✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지? (0) | 2025.05.13 |
---|---|
✅ Django SECRET_KEY를 안전하게 설정하는 방법 (0) | 2025.05.13 |
🔐 Django 비밀번호 암호화와 검증 완전 정리 (0) | 2025.05.13 |
🧠 Django ORM 객체 생성과 저장의 차이 완전 정리! (0) | 2025.05.13 |
✅ 특정 마이그레이션으로 되돌리기 (migrate 앱명 마이그레이션번호) (0) | 2025.05.13 |