ํจ์ ๊ธฐ๋ฐ ๋ทฐ (Function-Based View, FBV) ๋? โจ
1. ํจ์ํ ๋ทฐ ์ ์
- FBV๋ Python์ ํจ์๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ทฐ๋ฅผ ์ ์ํ๋ ๋ฐฉ์์ด๋ค
- ํน์ง
- ๊ฐ๋จํ๊ณ ์ง๊ด์ : ๋จ์ํ ๋ก์ง์ ์ฒ๋ฆฌํ ๋ ์ ํฉํจ
- ๋ช ์์ ์์ฒญ ์ฒ๋ฆฌ: ์์ฒญ ๋ฐฉ์(GET, POST ๋ฑ)์ ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ง์ ์ฒ๋ฆฌํ๋ค
- ์ ์ฐ์ฑ: ๋จ์ํ ๊ตฌ์กฐ๋ก ์ฝ๊ฒ ์์ฑ ๊ฐ๋ฅ
from django.http import HttpResponse
def my_view(request):
if request.method == 'GET':
return HttpResponse("This is a GET request.")
elif request.method == 'POST':
return HttpResponse("This is a POST request.")
- ์ฅ์
- ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์ด๋ณด์์๊ฒ ์ ํฉํ๋ค
- ๋จ์ํ ๋ก์ง ๊ตฌํ ์ ์ ํฉํ๋ค
- ๋จ์
- ์์ฒญ ๋ฐฉ์(GET, POST ๋ฑ)์ ์ฒ๋ฆฌํ๋ ์ฝ๋๊ฐ ๋ฐ๋ณต๋ ์ ์๋ค
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋ฎ์
ํด๋์ค ๊ธฐ๋ฐ ๋ทฐ (Class-Based View, CBV) ๋? โจ
2. ํด๋์คํ ๋ทฐ ์ ์
- CBV๋ Python์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐ๋ฅผ ์ ์ํ๊ณ , ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์
- ํน์ง
- ๊ตฌ์กฐ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ: ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ์ฅ์ ์ ํ์ฉํจ
- ๋ด์ฅ๋ ์ ๋ค๋ฆญ ๋ทฐ(Generic View) ์ ๊ณต: CRUD ์์ ๋ฑ ๋ฐ๋ณต์ ์ธ ์์ ์ ๊ฐ๋จํ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค
- ๋ฉ์๋ ๋ณ ์์ฒญ ์ฒ๋ฆฌ: HTTP ๋ฉ์๋(GET, POST ๋ฑ)๋ฅผ ๋ณ๋ ๋ฉ์๋๋ก ์ฒ๋ฆฌํจ
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
return HttpResponse("This is a GET request.")
def post(self, request):
return HttpResponse("This is a POST request.")
- ์ฅ์
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์
- ๋ณต์กํ ๋ก์ง์ ๊ตฌ์กฐํํ๊ธฐ์ ์ ํฉํจ
- Django์ ์ ๋ค๋ฆญ ๋ทฐ(Generic View)๋ฅผ ํ์ฉํด ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅํ๋ค
- ๋จ์
- ์๋์ ์ผ๋ก ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๊ณ ๋ณต์กํจ
- ๋จ์ํ ์์ ์๋ ๋ถํ์ํ๊ฒ ๋ณต์กํ ์ ์์
FBV์ CBV์ ์ฃผ์ ์ฐจ์ด์ โจ
๊ตฌ๋ถ | ํจ์ ๊ธฐ๋ฐ ๋ทฐ (FBV) | ํด๋์ค ๊ธฐ๋ฐ ๋ทฐ (CBV) |
๊ตฌ์กฐ | Python ํจ์๋ก ์ ์ | Python ํด๋์ค์ ๋ฉ์๋๋ก ์ ์ |
ํ์ฅ์ฑ | ์ฌ์ฌ์ฉ๊ณผ ํ์ฅ์ ์ ์ฝ | OOP ๊ฐ๋ ์ ํ์ฉํด ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ ์ฉ์ด |
์์ฒญ ์ฒ๋ฆฌ ๋ฐฉ์ | ์์ฒญ ๋ฐฉ์์ ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ฒ๋ฆฌ | HTTP ๋ฉ์๋(GET, POST ๋ฑ) ๋ณ ๋ฉ์๋ ์ ๊ณต |
๋ณต์กํ ๋ก์ง | ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ณ ๋ณต์กํด์ง ๊ฐ๋ฅ์ฑ ์์ | ๋ณต์กํ ๋ก์ง์ ๊ตฌ์กฐ์ ์ผ๋ก ๋๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ |
ํ์ต ๋์ด๋ | ์ง๊ด์ ์ด๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฌ์ | ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต์ง๋ง ์ ์ฉํจ |
์ฌ์ฉ ์ฌ๋ก | ๋จ์ํ ๋ก์ง ์ฒ๋ฆฌ์ ์ ํฉ | CRUD ๋ฐ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ์ ํฉ |
'[๋ด๋ฐฐ์บ ] ๋ณธ ์บ ํ (24.11.25 ~ 25.03.31) ๐๐ปโโ๏ธ > Django ๐ชข' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250103] Django Template Language ๋? (0) | 2025.01.04 |
---|---|
[241230] MVC ํจํด๊ณผ MTV ํจํด (2) | 2024.12.30 |