• Django 之 分页


    1. urs.py

     1 # coding:utf-8
     2 from django.conf.urls import url
     3 
     4 import views
     5 
     6 urlpatterns = [
     7    
     8     # 分页练习
     9     url(r'^herolist/(d*)$', views.herolist, name='herolist'),
    10     ]

    注意:第9行一定是 d* ,d* 表示至少0个  d+ 表示至少一个

    2. models.py

     1 # coding:utf-8
     2 from __future__ import unicode_literals
     3 
     4 from django.db import models
     5 
     6 class HeroInfo(models.Model):
     7     hname = models.CharField(max_length=100)    # 主要展示这个字段
     8     hgender = models.BooleanField()
     9     isDelete= models.BooleanField(default=False)
    10     
    11     def __str__(self):
    12         return self.hname.encode('utf-8')

    3. views.py

     1 # coding:utf-8
     2 from django.shortcuts import render
     3 from django.core.paginator import Paginator
     4 
     5 from models import BookInfo, HeroInfo
     6 
     7 def herolist(request, current_page):
     8     '''分页练习'''
     9     if not current_page:
    10         current_page = 1
    11     list = HeroInfo.objects.all().order_by("id")    # 一定要排序
    12     paginator = Paginator(list, 5) # 每页5条记录
    13     page = paginator.page(int(current_page)) # 获取第一页数据,从1开始
    14     context = {'page': page}
    15     return render(request, 'book/herolist.html', context)

    注意:在取数据的时候要排序(例如第11行),否则可能有如下警告:

    UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: 
    <class 'book.models.HeroInfo'> QuerySet.

    主要是因为取的数据是无序的,Paginator分页会出错

    4. herolist.html

     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     2 "http://www.w3.org/TR/html4/loose.dtd">
     3 <html>
     4     <head>
     5         <title>分页练习</title>
     6     </head>
     7     <body>
     8         <ul>
     9             {% for hero in page %}
    10                 <li>{{ hero.hname }}</li>
    11             {% endfor %}
    12         </ul>
    13         <hr>
    14         {% for index in page.paginator.page_range %}
    15             {% if index == page.number %}
    16                 {{ index }}
    17             {% else %}
    18                 <a href="{% url 'herolist' index %}"> {{ index }} </a>
    19             {% endif %}
    20         {% endfor %}
    21     </body>
    22 </html>

    5. 展示

  • 相关阅读:
    Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案
    EF core 性能调优
    Entity Framework Core Query Types
    Using the Repository and Unit Of Work Pattern in .net core
    CENTOS 7 下安装 REDIS 5.0.6 完整步骤
    MySQL InnoDB 群集–在Windows上设置InnoDB群集
    RFM客户价值分类
    修改meta标签
    $.Deferred 使用 (支持jQuery1.5版本以上)
    error: Unexpected console statement (no-console) 解决办法
  • 原文地址:https://www.cnblogs.com/liuq/p/9111490.html
Copyright © 2020-2023  润新知