🧩 Django의 request 객체 쉽게 이해하기 (왜 첫 번째 인자?)

2025. 5. 14. 11:30·기술블로그-Django편
목차
  1. 🧩 Django의 request 객체 쉽게 이해하기

🧩 Django의 request 객체 쉽게 이해하기


✅ 1. request는 누가 주는 걸까? 첫 번째 인자

우리는 def home_view(request):라고 작성하지만,
이 request는 우리가 만든 게 아니라 Django가 만들어서 넣어주는 것입니다.

즉, 사용자가 웹사이트에 접속하거나 버튼을 누를 때 Django가 자동으로 요청 정보를 분석해서 담아준 객체예요.


✅ 2. 왜 꼭 첫 번째 인자로 써야 할까?

Django는 사용자의 요청이 들어오면:

브라우저 → 서버(Django) → 요청을 분석해서 request 객체 생성 → view 함수 호출할 때 넘김

그래서 view 함수의 첫 번째 매개변수로 무조건 request를 넣어줘야 합니다.

def home_view(request):  # ← 필수
    print(request.method)  # 예: 'GET'

✅ 3. request 안에는 뭐가 들어있을까?

속성 설명 예시

request.method 어떤 요청인지 'GET', 'POST' 등
request.GET 주소 뒤 ?로 온 데이터 /search?q=django → request.GET['q'] → 'django'
request.POST 폼 입력값 <input>으로 전송된 내용
request.body 원시 데이터 (JSON 등) REST API 요청 처리 시 사용
request.user 로그인한 사용자 객체 인증이 필요한 페이지에서 유용
request.path 요청한 주소 경로 예: '/articles/5/'

✅ 4. 실제 사용 예시

def contact_view(request):
    if request.method == "POST":
        name = request.POST.get("name")
        message = request.POST.get("message")
        print(f"{name}님의 메시지: {message}")
    return render(request, "contact.html")
  • 사용자가 이름과 메시지를 보내면 request.POST로 값을 읽음
  • 이후 DB 저장, 이메일 전송 등 처리 가능

✅ 5. 한 줄 요약

request는 Django가 자동으로 넘겨주는 사용자 요청 정보 상자입니다 🎁

우리는 그 안에 든 걸 꺼내서 어떤 요청인지 확인하고, 응답을 만들어주는 역할을 합니다.


✅ 6. 더 궁금하다면 직접 들여다보자!

print(request)              # 전체 요약 정보
print(request.__dict__)    # 내부 구조까지 확인 가능

📌 예시 출력:

<WSGIRequest: GET '/articles/3/'>
{
  '_read_started': False,
  'resolver_match': ResolverMatch(func=<function article_detail>, args=(), kwargs={'article_id': '3'}, url_name='article_detail', ...),
  'path': '/articles/3/',
  'method': 'GET',
  'GET': <QueryDict: {}>,
  'POST': <QueryDict: {}>,
  'user': <User: anonymous>,
  ...
}

📌 요청에 어떤 속성이 들어있는지 직접 출력해서 확인하면 실력 향상에 큰 도움이 됩니다.


✅ 7. Class-Based View에서는?

함수형 뷰는 request를 첫 번째 인자로 받지만, 클래스 기반 뷰에서는 **self.request**로 사용합니다.

from django.views import View
from django.http import HttpResponse

class HelloView(View):
    def get(self, request):
        user_agent = self.request.headers.get("User-Agent")
        return HttpResponse(f"당신의 브라우저는 {user_agent}입니다")

✔️ 클래스 뷰 내부에서는 self.request를 통해 동일한 요청 정보를 다룹니다.


이제 request 객체가 훨씬 친숙해졌죠? 😎
Class-Based View나 API 처리 흐름까지 이어서 보고 싶다면 말씀해주세요!

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

[Django 3일차] Django에서의 요청(request)과 뷰(view)의 모든 것 1/4 (short_url 프로젝트)(250514)  (0) 2025.05.14
🔍 Django에서 Model.objects.get(code=code)가 뭔 뜻이야?  (0) 2025.05.14
📌 Django URL 패턴 등록 순서 완전 정리  (0) 2025.05.14
📨 Django Form 동작 흐름 완전 정리  (0) 2025.05.14
🚦 라우팅(Routing) vs 매핑(Mapping) 완전 정리  (0) 2025.05.14
  1. 🧩 Django의 request 객체 쉽게 이해하기
'기술블로그-Django편' 카테고리의 다른 글
  • [Django 3일차] Django에서의 요청(request)과 뷰(view)의 모든 것 1/4 (short_url 프로젝트)(250514)
  • 🔍 Django에서 Model.objects.get(code=code)가 뭔 뜻이야?
  • 📌 Django URL 패턴 등록 순서 완전 정리
  • 📨 Django Form 동작 흐름 완전 정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🧩 Django의 request 객체 쉽게 이해하기 (왜 첫 번째 인자?)

개인정보

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

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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