📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복

2025. 5. 9. 16:13·기술블로그-Django편
목차
  1. 📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복
  2. 1️⃣ 질문 배경
  3. 2️⃣ 핵심 구조 요약
  4. 3️⃣ 흐름도 요약
  5. 4️⃣ 사용자 질문 기준 핵심 포인트 정리
  6. ✅ Q1. form에 action이 없음 → 어디로 보내는가?
  7. ✅ Q2. templates에서 form을 불러온다고?
  8. ✅ Q3. get_context_data()에서 render가 없는데 어떻게 연결?
  9. 5️⃣ CBV 연결 구조 핵심
  10. 6️⃣ 실무 팁 💡
  11. ✅ 결론 한 줄 요약

📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복


1️⃣ 질문 배경

사용자는 다음과 같은 의문을 가짐 👇

"템플릿에서는 form 태그에 아무것도 적혀있지 않고,
views.py에서도 render가 명시되어 있지 않은데
어떻게 모든 게 자동으로 연결되는 것처럼 작동하지?"


2️⃣ 핵심 구조 요약

Django에서는 다음 6개의 구성 요소가 유기적으로 작동함:

  • urls.py : 어떤 URL에 어떤 view를 연결할지 결정
  • views.py : 요청에 대한 처리, 템플릿에 전달할 context 구성
  • forms.py : 입력 폼 처리 (ModelForm 포함)
  • models.py : DB 구조 설계
  • templates/xxx.html : 사용자에게 보여줄 화면 구성
  • 데이터베이스 : models를 통해 연결된 실제 저장소

3️⃣ 흐름도 요약

[ 브라우저 요청 (/blog/3/) ]
        ↓
[ urls.py ] → BlogDetailView.as_view()
        ↓
[ views.py - CBV 자동처리 (get or post) ]
        ↓
[ get_context_data() ] → 템플릿에 넘길 context 준비
        ↓
[ blog_detail.html ] ← context['blog'], context['comment_form']
        ↓
[ form 전송시 → post() ] → 댓글 저장 후 redirect
        ↓
[ models.py + DB 저장 처리 ]

4️⃣ 사용자 질문 기준 핵심 포인트 정리

✅ Q1. form에 action이 없음 → 어디로 보내는가?

  • action이 비어 있으면 현재 URL로 POST 요청됨 (/blog/3/)
  • CBV의 post() 메서드가 자동으로 처리

✅ Q2. templates에서 form을 불러온다고?

  • NO ❌ 직접 불러오는 게 아님
  • YES ✅ views.py에서 넘긴 context['comment_form']를 "출력"하는 것뿐

✅ Q3. get_context_data()에서 render가 없는데 어떻게 연결?

  • CBV 내부에서 자동으로 render 처리
  • 우리가 지정한 template_name = 'blog_detail.html'이 자동 사용됨

5️⃣ CBV 연결 구조 핵심

class BlogDetailView(DetailView):
    model = Blog
    template_name = 'blog_detail.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comment_form'] = CommentForm()
        return context

    def post(self, *args, **kwargs):
        comment_form = CommentForm(self.request.POST)
        if comment_form.is_valid():
            comment = comment_form.save(commit=False)
            comment.blog_id = self.kwargs['pk']
            comment.author = self.request.user
            comment.save()
            return HttpResponseRedirect(reverse_lazy('blog:detail', kwargs={'pk': self.kwargs['pk']}))

6️⃣ 실무 팁 💡

  • get_context_data()는 오직 템플릿에 넘길 변수만 준비함
  • render()는 CBV 내부에서 자동으로 호출됨 (우리가 따로 쓸 필요 없음)
  • 따라서 템플릿에서는 {% csrf_token %}이나 {{ comment_form.as_p }}만 있으면 동작함

✅ 결론 한 줄 요약

Django CBV 구조에서는 views.py가 context만 준비하면, 나머지 연결(render, form 처리, 템플릿 출력)은 Django가 자동으로 처리해준다!


'기술블로그-Django편' 카테고리의 다른 글

📌 Django CBV에서 self.object, context['object'] 완전 정복하기  (0) 2025.05.09
📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복 version 2  (0) 2025.05.09
🧠 Django ModelForm에서 위젯 설정 완전 이해하기 (widgets, form-control)  (0) 2025.05.09
🛠 Django Admin에서 댓글(Comment)을 블로그(Blog)와 함께 관리하는 방법  (0) 2025.05.09
🧩 Python의 *args, **kwargs 완전 정복 + Django 실전 활용 예시  (0) 2025.05.09
  1. 📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복
  2. 1️⃣ 질문 배경
  3. 2️⃣ 핵심 구조 요약
  4. 3️⃣ 흐름도 요약
  5. 4️⃣ 사용자 질문 기준 핵심 포인트 정리
  6. ✅ Q1. form에 action이 없음 → 어디로 보내는가?
  7. ✅ Q2. templates에서 form을 불러온다고?
  8. ✅ Q3. get_context_data()에서 render가 없는데 어떻게 연결?
  9. 5️⃣ CBV 연결 구조 핵심
  10. 6️⃣ 실무 팁 💡
  11. ✅ 결론 한 줄 요약
'기술블로그-Django편' 카테고리의 다른 글
  • 📌 Django CBV에서 self.object, context['object'] 완전 정복하기
  • 📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복 version 2
  • 🧠 Django ModelForm에서 위젯 설정 완전 이해하기 (widgets, form-control)
  • 🛠 Django Admin에서 댓글(Comment)을 블로그(Blog)와 함께 관리하는 방법
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (800) N
      • Python (32)
      • 프로젝트 (115) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    hotcoffeecase
    btsjungkook
    homebartrend
    titaniumcase
    gpterror
    bts
    classaction
    smartphonedurability
    basalcellcarcinoma
    youngprofessionals
    뷔
    remittance
    travel ban
    btsdischarge
    college reunions
    trumpmuskclash
    newpoliticalparty
    americaparty
    btsreunion
    urbantrends
    lawsuitculture
    global politics
    chatgpterror
    chinanightlife
    self-growth
    life reflection
    americanlaw
    livebroadcast
    RM
    btscomeback
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 Django 템플릿, Form, View, URL, DB 흐름 완전 정복

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.