django 实现分页功能

分页效果:

视图代码:

 1 # -*- coding: utf-8 -*-
 2 from django.shortcuts import render,get_object_or_404
 3 from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
 4
 5 from .models import Article
 6
 7 # Create your views here.
 8
 9 def index(request):
10     # latest_article_list = Article.objects.order_by(‘update‘)[:5]
11     # context = {‘latest_article_list‘:  latest_article_list}
12     # return render(request, ‘blog/index.html‘,context)
13     article_list = Article.objects.all().order_by(‘cre_date‘)
14     paginator = Paginator(article_list,2) #show 2 articles per page
15
16     page = request.GET.get(‘page‘)
17
18     try:
19         articles = paginator.page(page)
20     except PageNotAnInteger:
21         #页码不是整数,返回第一页。
22         articles = paginator.page(1)
23     except EmptyPage:
24         articles = paginator.page(paginator.num_pages)
25
26     return render(request, ‘blog/index.html‘, {‘articles‘: articles})

paginator是分页实例,page是链接传递到后端的页码参数,articles是每页的实例。

在次例中,paginator是把所有文章(article_list)按照每页两个划分,划成3页。page是前端请求的页码。articles是根据请求页码返回的具体的该页码内的文章(2篇文章)。

paginator和articles的属性和方法详见文档:https://docs.djangoproject.com/en/1.8/topics/pagination/

前端代码:

 1 <!--分页-->
 2 <nav>
 3   <div class="pagination pagination-right">
 4     <ul >
 5     <li>
 6         {% if articles.has_previous %}
 7             <a href="?page={{ articles.previous_page_number }}" class="active">&laquo;</a>
 8         {% endif %}
 9         {% if not articles.has_previous %}
10             <a href="" >&laquo;</a>
11         {% endif %}
12     </li>
13
14     <li>
15         {% for i in articles.paginator.page_range %}
16             <li {% if articles.number == i %}class="active"{% endif %}>
17                 <a  href="?page={{ i }}">{{ i }}
18
19                 </a>
20         </li>
21         {% endfor %}
22     </li>
23
24     <li>
25         {% if articles.has_next %}
26             <a href="?page={{ articles.next_page_number }}" >&raquo;</a>
27         {% endif %}
28         {% if not articles.has_next %}
29             <a href="" >&raquo;</a>
30         {% endif %}
31     </li>
32
33     <li>
34         共{{ articles.paginator.num_pages }}页
35     </li>
36     </ul>
37     </div>
38 </nav>
39 <!--ending 分页-->
时间: 2024-10-29 12:15:02

django 实现分页功能的相关文章

django实现分页功能

在个人博客或者网站上,我们发表文章经常会对博客进行分页,下面代码用django实现: django有它自带的分页功能:Paginator 不过我们用在它基础上开发的另一个包:django-pure-pagination 先了解一下这个包特性: 1.使用与django.core相同的API,因此与现有代码完全兼容. 2.它考虑了现有的GET参数,具有动态查询字符串创建. 3.用html呈现分页功能,开箱即用(方便) 4.使呈现更高级的分页模板更加容易. 使用: 一.安装 在虚拟环境中通过pip安装

Django 之 分页功能

HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/bootstrap-3.3.7/dist/css/bootstrap.css"> <

django分页功能,templatetags的应用

django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www.china.cn'>中国</a>''' format_html(html) django分页 分页功能基本操作 from django.core.import Paginator li=[11,12,13,22,24,25] p=Paginator(li,3) #将li传入,每页显示3条 p

django高级应用(分页功能)

django高级应用(分页功能) 1.原生分页应用 前端html代码 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <ul> 9 {% for item in posts.obj

{oldboy-django][2深入django]分页功能

1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/boots

django中orm分页功能(内置分页)

分批获取数据的方法 数据库方法 models.Uinfo.objects.all()[10:20] django自带的方法 创建一个新的url urlpatterns = [ url(r'^index.html/', views.index), ] 创建index函数 def index(request): """ 分页功能 :param request: :return: """ user_list = models.Uinfo.objects

Django自定制分页功能

URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import vi

django之分页

分页 在当前网页如果特别的数据,如果不想当前网页显示太多的内容数据(例如一些文章的目录或者一些小说的章节目录很多地方都用到分页),这时候就需要用分页了. 在Django中数据被分在不同页面中,并带有“上一页/下一页”标签.这些类位于django/core/paginator.py中. 分页器Paginator Paginator.py源码 import collections from math import ceil from django.utils import six from djan

django的分页--不全也未实现

一.Django内置分页 Paginator 二.自定义分页 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置. 1.设定每页显示数据条数 2.用户输入页码(第一页.第二页...) 3.根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置 4.在数据表中根据起始位置取值,页面上输出数据 需求又来了,需要在页面上显示分页的页面.如:[上一页][1][2][3][4][5][下一页] 1.设定每页显示数据条数 2.用户输入页码(第一页.第二