⚙️ 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>
🔍 흐름 설명
- request 객체를 받음
- post_list.html이라는 템플릿을 불러옴
- 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 |