본문 바로가기

Development (Python, Django, C..)

[Django] Generic View 활용하기

Generic View

장고에서 기본적으로 제공하는 뷰의 형태

개발의 속도를 더욱 빠르게 만들어주어 편리하게 개발할 수 있다는 장점

 

 

Generic View 종류

  1. Base View
    - View : 최상위에 있는 부모 제네릭 뷰 클래스
    - Template View : 주어진 템플릿으로 렌더링해주는 뷰
    - Redirect View : 주어진 URL로 Redirect해주는 기능의 뷰
  2. Generic Display View
    - ListView : 조건에 맞는 객체들의 목록을 보여주는 뷰
    - DetailView : 조건에 맞는 하나의 세부 객체들을 보여주는 뷰

  3. Generic Edit View
    - FormView : 폼이 주어지면 해당 폼을 출력하는 뷰
    - CreateView : 새로운 객체를 폼을 출력하는 뷰
    - UpdateView : 기존의 객체를 수정하는 폼을 출력하는 뷰
    - DeleteView : 기존에 있는 객체를 삭제하는 폼을 출력하는 뷰

  4. Generic Date View
    - YearArchiveView : 주어진 연도에 해당하는 객체를 모아줌
    - MonthArchiveView : 주어진 월에 해당하는 객체를 모아줌
    - DayArchiveView : 주어진 날짜에 해당하는 객체를 모아줌
    - TodayArchiveView : 오늘 날짜에 해당하는 객체를 모아줌
    - DateDetailView : 특정한 연, 월, 일 등에 해당하는 객체를 모아줌

 

Generic View 사용 방법

Import 수행 (활용 예)

from django.views.generic import ListView, DetailView

#Generic Date View import
from django.views.generic.dates import ArchiveIndexView, YearArchiveView, MonthArchiveView
from django.views.generic.dates import DayArchiveView, TodayArchiveView

 

 

Generic Display View

 

어떤 테이블에서 객체 리스트를 가져올 것인지 지정해주기
> model = Post

템플릿 파일 위치 지정
> template_name = ‘blogapp/post_all.html

템플릿 파일로 넘겨주는 객체 리스트의 이름 지정
> context_object_name = ‘posts’

 

한 페이지에서 보여주는 페이지 갯수 지정 (페이징)
> paginate_by = 2

class PostLV(ListView):
    #기본적으로 모든 View를 짤 때, model = Post로 지정해주어서 어떤 테이블에서 긁어오는지 지정해주어야 한다
    model = Post
    #템플릿 파일을 지정해준다
    template_name = 'blogapp/post_all.html'
    #템플릿 파일로 넘겨주는 객체 리스트에 대한 컨텍스트 변수명을 posts로 지정해준다
    context_object_name = 'posts'
    #한 페이지에 보여주는 객체 리스트의 갯수를 지정해준다 (페이징 기능)
    paginate_by = 2

 

 

Generic Data View 

 

어떤 테이블에서 객체 리스트를 가져올 것인지 지정해주기
> model = Post

기준으로 할 날짜 table 지정해주기
> date_field = ‘modify_date’

object_list를 템플릿에서 사용할 수 있도록 넘겨주려면
> make_object_list = True   //default = False

class PostYAV(YearArchiveView):
    model = Post
    date_field = 'modify_date'
    make_object_list = True

class PostMAV(MonthArchiveView):
    model = Post
    date_field = 'modify_date'