기술블로그-Django편

✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명

Chansman 2025. 5. 13. 16:05

✅ 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 관계를 기준으로 이해하자 💪