Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Python
- webkitrecognition
- 장고웹프로젝트
- 다른테이블에속해있습니다
- forof문
- 자바스크립트for문
- 자바스크립트날짜get
- 개발
- 장고웹
- R데이터분석
- 장고
- 이행은이미다른
- speechAPI
- PostgreSQL
- 장고프로젝트
- javaScriptError
- Android
- cmd명령어
- 안드로이드
- 이행은이미다른테이블에속해있습니다
- 자바스크립트날짜형식
- sqlite
- speechtoText
- 자바스크립트수학
- 자바스크립트날짜
- 오류종류
- 사례관리
- 자바스크립트forinforof차이
- 파이썬
- 청소년복지론
Archives
- Today
- Total
EMDI는 지금도 개발중
Django 클래스 기반 뷰와 함수 기반 뷰 차이점 본문
* 해당 글은 장고(Django)의 클래스형 뷰와 함수형 뷰의 차이점에 대해 공부하고자 기록한 내용입니다. 글의 내용은 한 블로그에서 작성한 내용을 토대로 재정리한 내용이기에 원문을 원하시는 분들은 아래의 링크를 참고해주세요.
from django.shortcuts import render, redirect
from django.views.generic import TemplateView, ListView, DetailView
from .models import Team
from .forms import TeamCreate
from django.http import HttpResponse
# Class-Based Views
class IndexView(TemplateView):
template_name = 'index.html'
class TeamInfoView(ListView):
model = Team
template_name = 'content/teamInfo.html'
context_object_name = 'teams'
class TeamCreateView(ListView):
model = Team
template_name = 'content/teamInsert.html'
context_object_name = 'teams'
#----------------------------------------------------------------
# Function-Based Views
def index(request):
return render(request, 'index.html')
def teamInfo(request):
return render(request, 'content/teamInfo.html')
def createTeam(request):
return render(request, 'content/teamInsert.html')
현재 공부목적으로 장고 웹 프로젝트를 만들고 있는데 작업하는 도중에 궁금증이 생겨버렸습니다. 그것은 바로 클래스 기반 뷰와 함수 기반 뷰 중 어떤 것이 좋은 것인가! 어떤 블로그는 클래스 기반 뷰로 쭉 사용하고 어떤 블로그는 함수형이 편하기에 함수 기반 뷰로 쭉 사용한다고 하고 참고하는 블로그마다 이렇게 각양각색이다보니 갈피를 못잡겠더라고요. 그래서 공부하자! 도대체 얘네들의 차이점은 무엇인가!
1. 클래스 기반 뷰의 예
# views.py
from django.views import View
class ContactView(View):
def get(self, request):
# Code block for GET request
def post(self, request):
# Code block for POST request
# urls.py
urlpatterns = [
url(r'contact/$', views.ContactView.as_view(), name='contact'),
]
일반 클래스 기반은 새 개체 작성, 양식 처리, 목록보기, 페이지 매김, 아카이브보기 등과 같은 웹 응용 프로그램의 일반적인 사용 사례를 해결하기 위해 도입되었다고 한다. 그것들은 django.views.generic 모듈에서 구현할 수 있다.
* 내장 클래스 기반 뷰의 문서
2. 함수 기반 뷰의 예
# views.py
def contact(request):
if request.method == 'POST':
# Code block for POST request
else:
# Code block for GET request (will also match PUT, HEAD, DELETE, etc)
# urls.py
urlpatterns = [
url(r'contact/$', views.contact, name='contact'),
]
3. 클래스기반 뷰와 함수기반 뷰의 장단점
장점 | 단점 | |
클래스기반 뷰 | - 쉽게 확장하고 재사용할 수 있는 코드 - mixin(다중상속)과 같은 기술을 사용가능 - 별도의 클래스 메소드로 HTTP메소드 처리 - 내장 도니 일반 클래스 기반 뷰 |
- 읽기가 어렵다 - 암시적 코드 흐름 - 부모클래스의 숨겨진 코드, 믹스 인 - 뷰 데코레이터를 사용하려면 추가 가져오기 또는 메소드 재정의가 필요 |
함수기반 뷰 | - 간단한 구현 - 읽기 쉽다 - 명시적 코드흐름 - 데코레이터의 간단한 사용법 |
- 코드를 확장하고 재사용하기 어려움 - 조건부 분기를 통한 HTTP 메소드 처리 |
'IT > 잡다한지식' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2021.07.14 |
---|---|
C# : Convert 금액 정수 형식의 특성 (0) | 2021.04.15 |
웹 소켓(WebSocket) (0) | 2020.06.10 |
자료 구조 list, set, map의 차이 (0) | 2020.03.27 |
Spring에서 사용하는 MVC패턴 (0) | 2020.03.27 |
Comments