⚙️ Django Function-Based View (FBV) 완전 이해하기

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

⚙️ Django Function-Based View (FBV) 완전 이해하기

Django에서 가장 기본적인 뷰 구현 방식은 FBV(Function-Based View) 입니다. 이 방식은 Python의 일반 함수처럼 뷰를 구성하여 빠르고 직관적으로 사용할 수 있는 장점이 있습니다.

이번 포스트에서는 FBV의 개념과 함께 render, redirect 등 실전에서 자주 쓰이는 메서드들을 예제와 함께 알아보겠습니다.


1️⃣ FBV란?

FBV(Function-Based View)는 이름 그대로 하나의 URL 요청을 처리하는 하나의 함수형 뷰입니다. 아래와 같은 특징을 가집니다:

✅ 특징 정리

  • 단순하고 명확한 코드 구조
  • 모든 HTTP 메서드를 직접 처리 (if request.method == 'POST': 등)
  • 초보자나 단일 책임 뷰 구현에 적합

2️⃣ 기본 FBV 구조

📌 예제: 단순한 인사 페이지

# views.py
from django.http import HttpResponse

def hello_view(request):
    return HttpResponse("<h1>Hello, Django FBV!</h1>")

이 뷰를 URLconf에 연결하면 브라우저에서 바로 볼 수 있습니다:

# urls.py
from django.urls import path
from .views import hello_view

urlpatterns = [
    path('hello/', hello_view),
]

3️⃣ render 함수로 HTML 반환하기

render()는 템플릿과 함께 데이터를 렌더링해서 HTML 페이지로 응답을 보내주는 메서드입니다.

📌 예제: 템플릿과 함께 출력

# views.py
from django.shortcuts import render

def post_list(request):
    posts = ["Django", "Python", "Web"]
    return render(request, 'post_list.html', {'posts': posts})

📁 templates/post_list.html

<h1>📄 게시글 목록</h1>
<ul>
  {% for post in posts %}
    <li>{{ post }}</li>
  {% endfor %}
</ul>

🔍 흐름 설명

  1. request 객체를 받음
  2. post_list.html이라는 템플릿을 불러옴
  3. posts 리스트를 넘겨서 템플릿에서 렌더링

4️⃣ redirect 함수로 URL 이동시키기

redirect()는 사용자의 요청을 다른 URL로 즉시 이동(리디렉션) 시키고 싶을 때 사용합니다.

📌 예제: 조건에 따라 페이지 이동

# views.py
from django.shortcuts import redirect

def go_home(request):
    return redirect('home')  # URL name 기준으로 이동

urls.py에서 'home'이라는 name이 지정된 path가 있어야 동작합니다:

# urls.py
path('', views.home, name='home')

🔎 실전 FBV 예제 요약

# views.py
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        # 로그인 로직 처리
        return redirect('dashboard')
    return render(request, 'login.html')

📌 구조 분석

구문 설명

if request.method == 'POST' 폼 전송 요청 감지
redirect() 로그인 성공 시 페이지 이동
render() 로그인 폼 페이지 최초 로딩

💡 FBV vs CBV (Class-Based View)

항목 FBV CBV

코드 구조 간단하고 직관적 구조적, 재사용성이 높음
학습 난이도 낮음 (초보자용) 높음 (설정 많음)
유연성 함수 기반으로 자유도 높음 장고가 제공하는 클래스 기반 추상화

✅ 요약 정리

  • FBV는 Django에서 가장 기본이 되는 뷰 방식
  • render()는 템플릿 렌더링, redirect()는 페이지 이동에 사용
  • 적은 기능일수록 FBV가 유리하며, 점차 CBV로 확장해가는 것도 좋은 전략

 

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

📝 Django Form 기본 정리  (0) 2025.05.14
🔗 Django URL 설정 완벽 가이드  (0) 2025.05.14
🧩 Django Jinja 템플릿 완전 가이드  (0) 2025.05.14
🧱 Django Database Model 완전 정복  (0) 2025.05.14
💻 Django 프로젝트 세팅 완전 정복!  (0) 2025.05.14
'기술블로그-Django편' 카테고리의 다른 글
  • 📝 Django Form 기본 정리
  • 🔗 Django URL 설정 완벽 가이드
  • 🧩 Django Jinja 템플릿 완전 가이드
  • 🧱 Django Database Model 완전 정복
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (801) N
      • Python (32)
      • 프로젝트 (115)
      • 과제 (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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
⚙️ Django Function-Based View (FBV) 완전 이해하기
상단으로

티스토리툴바