3단계 Django Paginator 페이지 나누기

Django는 페이지 데이터 관리를 돕는 새로운 클래스를 제공합니다. 이 클래스는django/core/paginator에 저장됩니다.py.그것은 목록, 모듈, 또는 다른 교체 가능한 대상을 수신할 수 있다.이 문서는 세 단계로 나뉘어 Django Paginator 페이지의 실현 절차를 소개할 것이다
1. 모델을 통해 Subject 생성
Django models
from django.db import models 
class Subject(models.Model):     
    """  ""”     
    no = models.AutoField(primary_key=True, verbose_name="  ")     
    name = models.CharField(max_length=31, verbose_name="  ")     
    intro = models.CharField(max_length=511, verbose_name="  ")     
    def __str__(self):         
        return self.name     
    
    class Meta:         
        db_table = 'tb_subject’         
        verbose_name_plural = "  "

2. view 모듈을 통해 전방의 데이터를 보여야 한다
Django view 구성
from django.shortcuts import render
from django.core.paginator import Paginator, InvalidPage, EmptyPage, PageNotAnInteger
from vote.models import Subject
def show_subject(request):
    """    """
    #  Subject       
    subjects = Subject.objects.all().order_by("no”)
    #  Paginator       ,  5   
    paginator = Paginator(subjects, 5)
    #  request.GET.get()    uri  page     
    page = request.GET.get('page')
    try:
        #       page  ,   page           
        subject_obj = paginator.page(page)
    except PageNotAnInteger:
        subject_obj = paginator.page(1)
    except (EmptyPage, InvalidPage):
        subject_obj = paginator.page(paginator.num_pages)
    return render(request, "vote/subject.html", {'subject_list': subject_obj})

3. 뷰의 데이터를 전단 모델에 렌더링
프런트엔드 페이지 나누기 코드 블록:
{% if subject_list.has_previous %}
  • «
  • {% endif %} {% for page_num in subject_list.paginator.page_range %} {% if page_num == subject_list.number %}
  • {{ page_num }} (current)
  • {% else %}
  • {{ page_num }} (current)
  • {% endif %} {% endfor %} {% if subject_list.has_next %}
  • »
  • {% endif %}

    4. 최종 디스플레이 효과
    (그림 출처: 네트워크)
    저자: 임홍리
    출처: 의신기술대학

    좋은 웹페이지 즐겨찾기