-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
페이징 소스 공유합니다.
19.09.16 10:49 작성 조회수 160
0
페이징 구현이 부족한듯하여 제가 만든 소스를 공유해봅니다.
#views.py
from django.shortcuts import render
from third.models import Restaurant
from django.core.paginator import Paginator
import math
from third.forms import RestaurantForm
from django.http import HttpResponseRedirect
# Create your views here.
def list(request):
restaurants = Restaurant.objects.all()
pagenator = Paginator(restaurants, 5)
page = request.GET.get('page')
if page is None:
page = 1
# 시작페이지 끝페이지 구하기
page_F = float(page)
if page_F <= 10:
beginPage = 1
else:
beginPage = (math.trunc(page_F / 10)) * 10 + 1
if (beginPage + 10) > pagenator.num_pages:
lastPage = pagenator.num_pages
else:
lastPage = beginPage + 9
nextRangeStartPage = lastPage + 1
pageRange = []
for num in range(beginPage, lastPage+1):
pageRange.append(num)
items = pagenator.get_page(page)
context = {
'restaurants': items,
'lastPage': lastPage,
'pageRange': pageRange,
'nextRangeStartPage': nextRangeStartPage,
}
return render(request, 'third/list.html', context)
#list.html
{% extends 'third/base.html' %}
{% load static %}
{% block content %}
<div class="container">
{% for item in restaurants %}
<div class="row restaurant-item" style="margin:20px auto;">
<div class="col-sm-12">
<div class="card border-secondary">
<div class="card-body">
<h5 class="card-title">{{ item.name }}</h5>
<p class="card-subtitle mb-2 text-muted">{{ item.address }}</p>
<p class="card-text">음식점 설명</p>
<a href="#" class="card-link">자세히 보기</a>
<a href="#" class="card-link">수정하기</a>
</div>
</div>
</div>
</div>
{% endfor %}
<div class="row">
<div class="col-sm-12 text-center">
<div class="pagination">
<spen class="step-links text-center" style="width:100%;">
{% if restaurants.has_previous %}
<a href="?page=1">«</a>
{% endif %}
{% for pageNum in pageRange %}
{% if restaurants.number == pageNum %}
<spen class="current">
{{ restaurants.number }}
</spen>
{% else %}
<a href="?page={{ pageNum }}">{{ pageNum }}</a>
{% endif %}
{% endfor %}
{% if restaurants.paginator.num_pages > lastPage %}
<a href="?page={{ nextRangeStartPage }}">»</a>
{% endif %}
</spen>
</div>
</div>
</div>
</div>
{% endblock %}
답변을 작성해보세요.
0
답변 1