📌 Django reverse() 호출부터 뷰 실행까지 전체 실행 흐름

2025. 5. 7. 14:21·기술블로그-Django편

📌 Django reverse() 호출부터 뷰 실행까지 전체 실행 흐름


✅ 사용 예시 코드

@login_required
def blog_create(request):
    ...
    return redirect(reverse('blog_detail', kwargs={'pk': blog.pk}))

🧭 1. 전체 실행 순서 흐름 요약

1️⃣ 사용자 POST 요청 → /blog/create/

  • 사용자가 블로그 글을 작성하고 폼을 제출합니다.

2️⃣ form.is_valid() → blog 객체 저장

  • 새 블로그 글이 생성되고, 예를 들어 blog.pk == 5

3️⃣ reverse('blog_detail', kwargs={'pk': 5}) 실행

  • Django가 urls.py에서 name='blog_detail'을 가진 경로를 찾습니다.
  • URL 패턴: path('<int:pk>/', views.blog_detail, name='blog_detail')
  • 결과: '/5/'라는 URL 문자열 반환

4️⃣ redirect('/5/')

  • 브라우저가 해당 URL로 리디렉션됩니다.

5️⃣ 브라우저가 /5/ 요청 (GET 요청)

  • 사용자의 브라우저가 GET /5/ 요청을 서버에 보냅니다.

6️⃣ URLConf 확인 → 해당 뷰 실행

  • urls.py에서 <int:pk>/ 패턴이 blog_detail 뷰와 연결됨
  • 최종적으로 아래 코드 실행:
def blog_detail(request, pk):
    ...

🔁 실행 흐름 다이어그램

[사용자 POST 요청 → /blog/create/] 
    ↓
[뷰에서 blog 객체 생성 → blog.pk = 5]
    ↓
[reverse('blog_detail', kwargs={'pk': 5}) → '/5/']
    ↓
[redirect('/5/')]
    ↓
[브라우저가 /5/로 이동 (GET 요청)]
    ↓
[urls.py → path('<int:pk>/', views.blog_detail)]
    ↓
[blog_detail(request, pk=5) 실행]

✅ 핵심 개념 정리

항목 설명

reverse() URL 이름 → 실제 URL 문자열 반환
kwargs={'pk': blog.pk} URL 패턴의 <int:pk> 변수에 값 전달
redirect() 해당 URL로 브라우저를 이동시킴
urls.py URL 경로와 뷰 함수를 연결하는 역할
뷰 함수 URL에 전달된 pk를 받아 해당 로직 처리

이런 구조 덕분에 Django에서는 뷰 간 이동, 객체 조회가 깔끔하고 자동화됩니다.
reverse()는 URL을 하드코딩하지 않고도 안전하게 참조할 수 있게 해 주는 핵심 도구입니다! 😉

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

📌 Django ModelForm의 instance= 사용법 완전 정리  (0) 2025.05.07
📌 Django {% url %} 태그 완전 가이드 - URL 생성의 모든 것  (0) 2025.05.07
📌 Django에서 request.GET.get('next') 완전 정리  (0) 2025.05.07
📌 Django 로그인 후 리디렉션 - next 파라미터 완전 정복  (0) 2025.05.07
📌 파이썬 키워드 인자 (Keyword Arguments) 완전 정복  (0) 2025.05.07
'기술블로그-Django편' 카테고리의 다른 글
  • 📌 Django ModelForm의 instance= 사용법 완전 정리
  • 📌 Django {% url %} 태그 완전 가이드 - URL 생성의 모든 것
  • 📌 Django에서 request.GET.get('next') 완전 정리
  • 📌 Django 로그인 후 리디렉션 - next 파라미터 완전 정복
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 Django reverse() 호출부터 뷰 실행까지 전체 실행 흐름
상단으로

티스토리툴바