[Django] Generic date views (Archive views)

2024. 6. 18. 10:53· Django/DRF
목차
  1. Generic date views 란?
  2. 공통 옵션
  3. 사용 예시
  4. ArchiveIndexView
  5. YearArchiveView
  6. MonthArchiveView
  7. WeekArchiveView
  8. DayArchiveView
  9. TodayArchiveView
  10. DateDetailView
반응형

Generic date views 란?

Django의 클래스 기반 뷰는 다양한 유형의 뷰를 최소한의 코드로 처리할 수 있도록 도와주는데, 그 중에서 Generic date views는 날짜 기반 데이터를 효율적으로 관리하고 표시하는데 많은 도움을 준다.

 

블로그, 뉴스, 웹사이트에서 날짜별로 콘텐츠를 정리하는데 유용하며 아래와 같은 기능들이 있다.

  • ArchiveIndexView: 날짜 필드를 기준으로 정렬된 객체 목록을 표시
  • YearArchiveView: 특정 연도의 객체를 표시
  • MonthArchiveView: 특정 연도의 특정 월에 해당하는 객체를 표시
  • WeekArchiveView: 특정 연도의 특정 월의 특정일에 해당하는 객체를 표시
  • DayArchiveView: 특정 연도의 특정 월의 특정일에 해당하는 객체를 표시
  • TodayArchiveView: 현재 날짜의 객체를 표시
  • DateDetailView: 연도, 월, 일, 고유 식별자를 기준으로 단일 객체를 표시

 

공통 옵션

  • allow_future (디폴트 : False)
    • False : 조회 조건에서 지정 필드의 현재 날짜 이후 레코드에서 제외
  • allow_empty (디폴트 : False)
    • False : 빈 리스트에서는 404 응답
  • paginate_by (디폴트: None)
    • 페이징 크기

 

사용 예시

from django.views.generic.dates import (사용할 view)

 

ArchiveIndexView

# views.py
from django.views.generic.dates import ArchiveIndexView
from .models import Song

class SongArchiveIndexView(ArchiveIndexView):
    model = Song
    date_field = "release_date"
    paginate_by = 10  # 더 나은 사용성을 위한 페이지네이션
    
    
# urls.py
urlpatterns = [
    path('archives/', SongArchiveIndexView.as_view(), name='song_archive_index'),
]

 

YearArchiveView

# views.py
from django.views.generic.dates import YearArchiveView

class SongYearArchiveView(YearArchiveView):
    model = Song
    date_field = "release_date"
    make_object_list = True  # 컨텍스트에 객체 목록 포함


# urls.py
urlpatterns += [
    path('archives/<int:year>/', SongYearArchiveView.as_view(), name='song_archive_year'),
]

 

MonthArchiveView

# views.py
from django.views.generic.dates import MonthArchiveView

class SongMonthArchiveView(MonthArchiveView):
    model = Song
    date_field = "release_date"


# urls.py
urlpatterns += [
    path('archives/<int:year>/<int:month>/', SongMonthArchiveView.as_view(), name='song_archive_month'),
]

 

WeekArchiveView

# views.py
from django.views.generic.dates import WeekArchiveView

class SongWeekArchiveView(WeekArchiveView):
    model = Song
    date_field = "release_date"
    week_format = "%U"  # 주 형식 지정 (예: "%U"는 0부터 시작하는 주 번호)


# urls.py
urlpatterns += [
    path('archives/<int:year>/week/<int:week>/', SongWeekArchiveView.as_view(), name='song_archive_week'),
]

 

DayArchiveView

# views.py
from django.views.generic.dates import DayArchiveView

class SongDayArchiveView(DayArchiveView):
    model = Song
    date_field = "release_date"


# urls.py
urlpatterns += [
    path('archives/<int:year>/<int:month>/<int:day>/', SongDayArchiveView.as_view(), name='song_archive_day'),
]

 

TodayArchiveView

# views.py
from django.views.generic.dates import TodayArchiveView

class SongTodayArchiveView(TodayArchiveView):
    model = Song
    date_field = "release_date"


# urls.py
urlpatterns += [
    path('archives/today/', SongTodayArchiveView.as_view(), name='song_archive_today'),
]

 

DateDetailView

# views.py
from django.views.generic.dates import DateDetailView

class SongDateDetailView(DateDetailView):
    model = Song
    date_field = "release_date"
    slug_field = "slug"  # 고유 식별자 필드
    slug_url_kwarg = "slug"  # URL에서 식별자를 추출하는 키워드 인자


# urls.py
urlpatterns += [
    path('archives/<int:year>/<int:month>/<int:day>/<slug:slug>/', SongDateDetailView.as_view(), name='song_detail'),
]
반응형
저작자표시 (새창열림)

'Django > DRF' 카테고리의 다른 글

[Django] Bulk Operations에 대해서  (0) 2024.07.03
[Django] 모델 기본 필드 이해하기  (1) 2024.06.18
[Django] django_extensions  (0) 2024.06.17
[Django] URL Reverse를 통한 URL 작성  (0) 2024.06.17
[Django] Django에서 Slug란?  (0) 2024.06.17
  1. Generic date views 란?
  2. 공통 옵션
  3. 사용 예시
  4. ArchiveIndexView
  5. YearArchiveView
  6. MonthArchiveView
  7. WeekArchiveView
  8. DayArchiveView
  9. TodayArchiveView
  10. DateDetailView
'Django/DRF' 카테고리의 다른 글
  • [Django] Bulk Operations에 대해서
  • [Django] 모델 기본 필드 이해하기
  • [Django] django_extensions
  • [Django] URL Reverse를 통한 URL 작성
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
[Django] Generic date views (Archive views)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.