django view(7) : GenericDateViews

2022. 4. 16. 22:45
  • 인프런의 이진석 강사님의 장고강의를 참고

 

 

GenericDateViews

  • 날짜 관련된 필터링이 제공되는 CBV
  • 각 CBV명에 부합되는 값을 인자로 받는다
    • ex) YearArchiveView: YEAR인자를 받음
    • 일반적으로 urls.에서 '<year:year>/'와 같은 식으로 인자를 제공함
  • allow_future
    • 모든 genericdateviews들이 가지고 있는 공통옵션
    • 현재 시간 이후의 record를 queryset에서 제외시킬지에 관함
    • 디폴트는 false

 

 

 

GenericDateViews 종류

  • ArchiveIndexView : 지정 날짜필드 역순으로 정렬된 목록
  • YearArchiveView : 지정 year년도의 목록
  • MonthArchiveView : 지정 year/month 월의 목록
  • WeekArchiveView : 지정 year/week 주의 목록
  • DayArchiveView : 지정 year/month/day 일의 목록
  • TodayArchiveView : 오늘 날짜의 목록
  • DateDetailView : 지정 year/month/day 목록 중에서 특정 pk의 detail. 일반적인 detailview에 year/month/day가 추가된다고 보면 됨

 

ArchiveIndexView

  • 지정 날짜필드로부터 역순으로 정렬된 목록
  • 최신순부터 나열하고자 할 때 유용함
  • 옵션(클래스 변수)
    • model : 어떤 모델의의 데이터를 나열할지
    • date_field : 해당 모델에서 정렬의 기준이 되는 필드. 선택된 필드의 역순으로 데이터를 나열
    • date_list_period : 데이터들을 특정 기간을 기준으로 묶어주는 date_list라는 변수를 제공하는데, 이때 특정 기간의 값 (default = year)
    • template_name_suffix : template의 이름으로 설정된 값의 앞뒤에 소문자와 .html을 더한 template을 찾는다. 예를 들어 '_archive'라는 값을 주면 post_archive.html 템플릿을 자동으로 찾음. 디폴트는 _archive
  • Context(template단에 넘겨주는 인자들)
    • latest : 필터링 된 queryset
    • date_list : date_list_period를 기준으로 그룹핑된 queryset의 목록
#views.py
from django.views.generic import ArchiveIndexView
post_archive = ArchiveIndexView.as_view(model = Post,date_field='created_at',paginate_by=10)

 

YearIndexView

  • 데이터를 year을 기준으로 묶은 queryset을 제공
  • 필요한 URL 인자 : year (urls.py를 통해 보통 제공)
  • 옵션(클래스 변수)
    • model : 어떤 모델의의 데이터를 나열할지
    • date_field : 해당 모델에서 정렬의 기준이 되는 필드. 선택된 필드의 역순으로 데이터를 나열
    • make_object_list : object_list라는 context를 비울지 말지.(default = False)
    • date_list_period : 데이터들을 특정 기간을 기준으로 묶어주는 date_list라는 변수를 제공하는데, 이때 특정 기간의 값 (default = month)
    • template_name_suffix : template의 이름으로 설정된 값의 앞뒤에 소문자와 .html을 더한 template을 찾는다. 예를 들어 '_archive_year'라는 값을 주면 post_archive.html 템플릿을 자동으로 찾음. 디폴트는 _archive_year
  • Context(template단에 넘겨주는 인자들)
    • year,previous_year,next_year
    • date_list : date_list_period를 기준으로 그룹핑된 queryset의 목록
    • object_list
#views.py
from django.views.generic import YearArchiveView
post_archive_year = YearArchiveView.as_view(model=Post,date_field='created_at')

 

BELATED ARTICLES

more