# 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 %}
<h1>{{page.name}} / ${{page.price}}</h1>
{% endfor %}
<h5>
# attributes에 접근하려면 page_obj로 접근하면된다
{% if page_obj.has_previous %}
<a href="/?page={{page_obj.previous_page_number}}">Previous</a>
{% endif %}
Page {{page_obj.number}} of {{page_obj.paginator.num_pages}}
{% if page_obj.has_next %}
<a href="/?page={{page_obj.next_page_number}}">Next</a>
{% endif %}
{% for page in page_obj.paginator.page_range %}
<a href="/?page={{page}}">{{page}}</a>
{% endfor %}
</h5>
{% endblock %}