
django는 두 가지 유형의 뷰를 사용하여 웹 애플리케이션을 개발한다.
1. FBV(=Function Based Views): 함수 기반 뷰
2. CBV(=Class Based Views): 클래스 기반 뷰
정의:
FBV는 가장 기본적인 뷰 작성 방식이다. 특정 URL에 대한 요청을 처리하는 함수를 직접 작성한다. 각 함수는 요청을 받고 처리 후에 응답을 반환한다.
장점:
단점:
예시:
def hello_world(request):
if request.method == "POST":
text = request.POST.get("hello_world_input")
# DB 저장
new_hello_world = HelloWorld()
new_hello_world.text = text
new_hello_world.save()
return HttpResponseRedirect(reverse('accountapp:hello_world'))
else:
hello_world_list = HelloWorld.objects.all()
return render(request, 'accountapp/hello_world.html', context={'hello_world_list': hello_world_list})
View: 모든 클래스 기반 뷰의 기본이 되는 클래스. 다른 모든 뷰는 이 클래스를 상속받아 확장함TemplateView: 템플릿 파일을 렌더링하여 반환. 주로 정적 페이지 표시할 때 사용됨ListView: 데이터베이스에서 모델의 목록을 가져와 템플릿에 전달함. 페이징 처리 같은 목록 관련 기능을 쉽게 구현 가능DetailView: 특정 객체의 상세 정보 표시. 모델의 특정 인스턴스에 대한 정보를 템플릿에 전달함CreateView: 폼을 통해 새로운 데이터를 입력받아 모델 인스턴스를 생성함UpdateView: 기존 모델 인스턴스를 수정할 수 있는 폼을 제공함DeleteView: 특정 모델 인스턴스를 삭제함FormView: 특정 폼을 처리하는 일반적인 뷰. 유효성 검사 후 지정된 로직을 실행함