[Python] Class Based Views를 사용해보자

[Python] Class Based Views를 사용해보자

# urls.py from django.urls import path from rooms import views as room_views app_name = "core" urlpatterns = [ path("", room_views.Homeview.as_view(), name="home"), ]

# views.py from django.views.generic import ListView from rooms import models as room_models # ListView 외에도 용도에 따라 많은 CBV 들이 존재한다 class Homeview(ListView): """HomeView Definition""" # 모델 지정 model = room_models.Room # 페이지 당 content 갯수 paginate_by = 10 # 마지막 페이지 최소 content 수량 설정 paginate_orphans = 5 # sort할 기준 (fields) ordering = "created" # query에서 page이름 아래의 예시) '/?page=1' page_kwarg = "page"

# home.html {% extends 'base.html' %} {% block page_name%} Home {% endblock %} {% block content %} # def views를 썼을 때에는 context를 전달해줘서 # kw를 맞춰줬어야 했는데 CBV에서 자동적으로 model.object.all()을 반환해주기 때문에 # object_list로 list에 접근하면 된다 {% for page in object_list %} {{page.name}} / ${{page.price}} {% endfor %} # attributes에 접근하려면 page_obj로 접근하면된다 {% if page_obj.has_previous %} Previous {% endif %} Page {{page_obj.number}} of {{page_obj.paginator.num_pages}} {% if page_obj.has_next %} Next {% endif %} {% for page in page_obj.paginator.page_range %} {{page}} {% endfor %} {% endblock %}

from http://insubkim.tistory.com/146 by ccl(A) rewrite - 2021-12-11 01:01:32