(django) Generic date views

‍심민성·2021년 10월 18일
0

Generic date views(날짜 관련 필터링 기능)


  • 종류

    ArchiveIndexView: 지정 날짜필드 역순으로 정렬된 목록
    YearArchiveView: 지정 year년도의 목록
    MonthArchiveView: 지정 Year/month 월의 목록
    WeekArchiveView: 지정 Year/week 주의 목록
    DayArchiveView : 지정 year/month/day 일의 목록
    TodayArchiveView : 오늘 날짜의 목록
    DateDetailView : 지정 year/month/day 목록 중에서 특정 pk의 Detail

    DeteDetailView는 URL에 year/month/day를 쓰고자 할 경우에 유용하다.

  • 옵션

    allow_future(디폴트: False) - 현재 시간 이후의 Record는 제외한다.

  • ArchiveIndexView Detail & Example

    필요 URL 인자: 없음
    옵션: model, date_field(정렬 기준 필드), date_list_period(디폴트: "year" )
    디폴트 template_name_suffix : "_archive.html"
    Context : lastest(QuerySet), date_list(등록된 Record의 년도 목록)

    #views.py
    post_archive = ArchiveIndexView.as_view(model=Post, data_field='created_at', paginate_by=10)
     #urls.py
     urlpatterns = [
     	path('archive/', views.post_archive, name='post_archive')
     ]
  • YearArchiveView Detail & Example

    필요 URL 인자: Year
    옵션: model, date_field(정렬 기준 필드), date_list_period(디폴트: "month" )
    디폴트 template_name_suffix : "_archive_year.html"
    make_object_list (디폴트: False) - 거짓일 경우 object_list를 비움.
    Context : year, previous_year, next_year, date_list(전체 Record의 월 목록), object_list

    #views.py
    class PostYearArchiveView(YearArchiveView):
    	model = Post
            date_field = 'created_at'
            # make_object_list = False
     post_year_archive = YearArchiveView.as_view(model=Post, date_field='created_at')
     #urls.py
     urlpatterns = [
     	re_path(r'^archive/<?P<year>\d{4}/$', ...),
     ]
  • ###DateDetailView Detail & Example

    필요 URL 인자: Year, month, day, pk, slug

    #views.py
    class PostDateDetailView(DateDetailView):
        model = Post
        date_field = 'created_at'
        month_format = '%m'
     post_year_archive = YearArchiveView.as_view(model=Post, date_field='created_at')
     #urls.py
     urlpatterns = [
     	re_path(r'^archive/(?P<year>\d{4})/(?P<month>\d{1, 2})/(?P<day>\d{1, 2})/?P<pk>\d+/$', ...)
     ]



profile
개발하는 트레이더, 트레이딩하는 개발자

0개의 댓글