🧩 Django 댓글 API 흐름 완전 정복

2025. 5. 21. 17:23·기술블로그-Django편

🧩 Django 댓글 API 흐름 완전 정복

🎯 목표

특정 블로그 글에 달린 댓글만 조회하는 API의 흐름을 시각적으로 이해하자!


🛠️ 사용하는 클래스

class CommentListCreateAPIView(ListCreateAPIView):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer
    permission_classes = [IsAuthenticatedOrReadOnly]

    def get_queryset(self):
        queryset = super().get_queryset()
        blog = self.get_blog_object()
        return queryset.filter(blog=blog)

    def get_blog_object(self):
        return get_object_or_404(Blog, pk=self.kwargs.get('blog_pk'))

🔍 주요 흐름 설명

단계설명

1️⃣ 클라이언트 요청 /blogs/5/comments/ 같은 URL로 GET 요청 발생
2️⃣ View 실행 CommentListCreateAPIView가 실행됨
3️⃣ get_queryset 호출 댓글 리스트를 가져오기 위해 이 메서드가 자동 호출됨
4️⃣ get_blog_object 실행 URL에서 blog_pk=5 값을 꺼냄 → 해당 블로그 글 객체 조회
5️⃣ 전체 댓글 가져오기 Comment.objects.all() ← 전체 댓글 쿼리셋 불러오기
6️⃣ filter(blog=blog) 해당 블로그에 달린 댓글만 필터링
7️⃣ 직렬화 및 응답 JSON 형식으로 클라이언트에게 전달

🧠 핵심 정리

  • queryset = Comment.objects.all() → 댓글 테이블 전체를 기본 쿼리셋으로 설정
  • filter(blog=blog) → 특정 블로그 글에 해당하는 댓글만 뽑음
  • blog = self.get_blog_object() → URL에서 blog_pk 값을 꺼내 블로그 글 객체를 찾음
  • 모든 핵심은 ForeignKey 관계가 정의되어 있기 때문!

🗺️ 흐름도 보기

✅ 마무리 요약

질문 답변
댓글은 어디서 지정함? queryset = Comment.objects.all()
왜 blog=blog가 가능한가? Comment 모델에 blog = ForeignKey(Blog)로 연결돼 있어서!
어떤 블로그 글에 달린 댓글만 보게 하는 방법은? .filter(blog=blog) 로 필터링

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

🌐 웹소켓(WebSocket)이란?  (3) 2025.07.11
📌 Django ORM 완전 정복: 정참조, 역참조, select_related, prefetch_related, __문법 총정리  (0) 2025.05.27
🧠 DRF와 Form 방식의 코드 생성 흐름 차이 - 왜 staticmethod를 써야 하고, commit=False를 쓰는가?  (0) 2025.05.20
🧪 Django shell로 클래스/메서드 유효성 확인하는 방법 총정리  (0) 2025.05.19
🔐 Django에서 make_random_password() 오류 해결기 (Django 5.x 대응)  (0) 2025.05.19
'기술블로그-Django편' 카테고리의 다른 글
  • 🌐 웹소켓(WebSocket)이란?
  • 📌 Django ORM 완전 정복: 정참조, 역참조, select_related, prefetch_related, __문법 총정리
  • 🧠 DRF와 Form 방식의 코드 생성 흐름 차이 - 왜 staticmethod를 써야 하고, commit=False를 쓰는가?
  • 🧪 Django shell로 클래스/메서드 유효성 확인하는 방법 총정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794)
      • Python (32)
      • 프로젝트 (113)
      • 과제 (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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🧩 Django 댓글 API 흐름 완전 정복
상단으로

티스토리툴바