inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬으로 장고(Django) 공략하기: 입문

R: 페이지 구현하기

페이징 소스 공유합니다.

272

조현열

작성한 질문수 3

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">&laquo;</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 }}">&raquo;</a>
                    {% endif %}

                </spen>
            </div>
        </div>
    </div>
</div>
{% endblock %}

django python

답변 1

0

박순영

아무래도 페이지네이션 파트는 짧게 진행하느라 조금 부족했던거 같네요.

공유해주셔서 정말 감사합니다.

빨간 줄이 뜨네요

0

137

1

import 문장에 빨간줄이 뜹니다.

0

156

1

putty 관련 질문

0

192

1

uWSGI 세팅하기_ 최종 502 bad gateway error

0

809

1

putty 접속관련

0

305

1

[리뷰 삭제하기] 삭제시 path 에러문구나옴.

0

386

1

데이터 새성시 forms.py, models.py 관련문의

0

308

1

'폼으로 데이터 전송하기' 강의 소리가 갑자기 작아짐

0

318

1

[스태틱]index.html 의 이미지를 변경하려면 ?

0

508

1

WARNINGS: ?: (staticfiles.W004) The directory 'C:\projects\first-django\static' in the STATICFILES_DIRS setting does not exist.

0

427

1

사진 넣고 엑박...ㅜㅜ

0

335

0

간단한 웹 페이지 띄우기 강의 10분 후반쯤

0

419

0

리뷰 등록 구현하기 4:26 url 오류

0

347

1

create.html

0

361

1

502 badgateway 오류가 떠요

0

284

0

putty에서 막혔네요 ㅠㅠ

0

355

2

django) 한 폼에 여러 모델 데이터 입력하는 경우

0

328

0

파이참 안에서 가상환경 접속이 안 됩니다.

0

691

1

settings.py

0

305

1

만약 웹앱을 업데이트할경우는 어떻게 해야하나요?

0

374

1

CSS 가운데 정렬 적용 안됨

0

4833

3

NameError: name 'os' is not defined

2

1107

1

1분 26초에 post=Post.objects.create(title="this is title", content="this is content")부분이 실행이 안됩니다.

0

267

1

virtualenv가 설치가 안됩니다..

0

439

1