django网页的分页功能,大家如果有疑问请留言

url文件

from django.contrib import admin
from django.conf.urls import url
from app01 import  views

urlpatterns = [
    url(r‘^user_list‘, views.user_list)
]

对views文件

def user_list(request):
    pagesizenumber = request.COOKIES.get(‘pagesizenumber‘, 10) #获取COOKIE传过来的key(‘pagesizenumber‘), 默认为10
    current_number = request.GET.get(‘p‘, 1) #获得前端a的?p = 的值,此为当前页码数
    one_page_number = 11  #每页显示的页码数
    pagefi = pagenation.Page(List, pagesizenumber, current_number, one_page_number) #生成类
    (show_page, list_page) = pagefi.page_str()  #返回两个参数
    return  render(request, ‘user_list.html‘, {‘show_page‘ : show_page, ‘list_page‘: list_page})

对于上述的pagenation.Page 中为Page.py 文件

from django.utils.safestring import mark_safe
class Page:

    def __init__(self, List, pagesizenumber, current_number, one_page_number = 11):
        # List 输入传入的数据, pagesizenumber 每页显示的数据量,current_number 当前页码, one_page_number:每页页码数,默认11
        self.pagesizenumber = pagesizenumber
        self.current_number = current_number
        self.one_page_number = one_page_number
        self.List = List

    @property
    def page_number(self):
        self.one_math_number = int(self.pagesizenumber)
        page_number, v = divmod(len(self.List), self.one_math_number)  # page_number 总页码数, 计算所需要的总页码数
        return page_number
    @property
    def show_page(self):
        self.current_number = int(self.current_number)  #当前页码数
        self.one_math_number = int(self.pagesizenumber)
        page_number, v = divmod(len(self.List), self.one_math_number)  #计算得需要的总页码数
        if v > 0:
            page_number += 1  # 如果大于1, 页码数+1
        show_page = self.List[(self.current_number - 1) * self.one_math_number:self.current_number * self.one_math_number]  # 显示在页面的数
        return show_page

    def page_str(self):
        list_page = []
        self.current_number = int(self.current_number)
        self.one_math_number = int(self.pagesizenumber)
        self.one_page_number = int(self.one_page_number)

        if self.page_number < self.one_page_number:  # 总页码数小于单页页码数
            start_page = 1
            end_page = int(self.page_number) + 1
        else:  # 总页码数大于单页码数
            if self.current_number <= int((self.one_page_number + 1) / 2):  # 当前页码 小于 单页页码数中间
                start_page = 1
                end_page = int(self.one_page_number) + 1
                print(start_page)
                print(end_page)
            elif self.page_number - int((self.one_page_number - 1) / 2) > self.current_number > int(
                            (self.one_page_number + 1) / 2):  # 当前页码数 大于 单页页码数中间 小于 总页码数-单页页码中间 #开始发生变化
                start_page = int(self.current_number - ((self.one_page_number) - 1) / 2)
                end_page = int(self.current_number + ((self.one_page_number) + 1) / 2)
            else:
                start_page = self.page_number - self.one_page_number  # 当前页码数大于总页码数-单页页码中间
                end_page = self.page_number + 1
        # 上一页按钮
        if self.current_number == 1:
            x = ("<a class=‘paging active‘ href=‘#‘>上一页</a>")
        else:
            x = ("<a class=‘paging active‘ href=‘/user_list/?p=%s‘>上一页</a>" % (self.current_number - 1,))
        list_page.append(x)
        # 添加a标签
        for i in range(start_page, end_page):
            if i == self.current_number:
                x = ("<a class=‘paging active‘ href=‘/user_list/?p=%s‘>%s</a>" % (i, i))
            else:
                x = ("<a class=‘paging‘ href=‘/user_list/?p=%s‘>%s</a>" % (i, i))

            list_page.append(x)
        # 下一页按钮
        if self.current_number == self.page_number:
            x = ("<a class=‘paging active‘ href=‘#‘>下一页</a>")
        else:
            x = ("<a class=‘paging active‘ href=‘/user_list/?p=%s‘>下一页</a>" % (self.current_number + 1,))
        list_page.append(x)

        x = ‘‘‘
                <input  type="text"><a onclick = ‘jumpTo(this, "/user_list/?p=")‘;>Go</a>
                <script>
                    function jumpTo(ths, base){
                      var val = ths.previousSibling.value;
                      location.href = base + val;

                    }
                </script>
                ‘‘‘
        # ths.previousSibling.value 找出在其上面的input的value值
        # location.href = base + val   跳转
        # x = ‘‘‘
        # <input type=‘text‘ ><a onclick=‘jumpTo(this, "/user_list/?p=")‘;>Go</a>
        # <script>
        #     function jumpTo(ths,base){
        #         var val = ths.previousSibling.value;
        #         location.href = base + val;
        #      }
        # </script>
        #     ‘‘‘
        list_page.append(x)

        list_page = ‘‘.join(list_page)
        print(list_page)
        list_page = mark_safe(list_page)
        return self.show_page, list_page

对于user_list.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pagination .paging{
            padding: 5px;
            margin: 5px;
            background-color: aqua;
            color: white;
        }
        .pagination .paging.active{
            background-color: red;
            color: white;

        }
    </style>
</head>
<body>
     <ul>
         {% for i in show_page %}
             <li>{{ i }}</li>
         {% endfor %}
     </ul>
{#     {% for i in list_page %}#}
{#        <a class=‘paging‘ href="/user_list/?p={{ i }}">{{ i }}</a>#}
{#     {% endfor %}#}

     <div class = pagination>
       {{ list_page }}
     </div>
{#     onchange 检测改变#}
     <select id = ‘i1‘ onchange="changePageSize(this)">
         <option value="10">10</option>
         <option value="30">30</option>
         <option value="50">50</option>
         <option value="100">100</option>
     </select>
<script src = ‘/static/jquery-3.3.1.js‘></script>
<script src="/static/jquery.cookie.js"></script>
<script>
{#    文件一进来就执行该操作, 获得pagesizenumber值,改变values, 初始值为10#}
    $(function () {
        var v = $.cookie(‘pagesizenumber‘);
        if (v){$(‘#i1‘).val(v);}
        else{$(‘#i1‘).val(10)}
    });
    function changePageSize(ths) {
        var v = $(ths).val();
        $.cookie(‘pagesizenumber‘, v, {path:‘/user_list/‘});
        location.reload();
{#        刷新实现跳转#}

    }

</script>

</body>
</html>

原文地址:https://www.cnblogs.com/my-love-is-python/p/9471096.html

时间: 2024-10-10 19:44:03

django网页的分页功能,大家如果有疑问请留言的相关文章

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自带分页功能

直接上代码: models.py django.db models Asset(models.Model):     OS_CHOICE = [         (, ),         (, ),         (, ),         (, ),         (, ),     ]     hostname = models.CharField(=, =, =)     ip = models.GenericIPAddressField(=, =)     port = model

django 自带分页

使用django 自带分页功能: from django.core.paginator import Paginator,EmptyPage,PageNotAnInteget EmptyPage 是在超出页数时改怎么做 PageNotAnInteget 使用在异常中出现错误的时候该怎么做 objs = [1,2,3,4,5,6,7,8,9] p = Paginator(objs,3) 每页显示3个 p.count 打印的是 objs里有多少个内容 p.num_pages 显示有多少页 p.pag

django之快速分页

本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用.基本知识点:Django提供了数据分页的类,这些类被定义在django/core/paginator.py中对象Paginator用于对列进行一页n条数据的分页运算对象Page用于表示第m页的数据Paginator对象 方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数属性count:返回对象总数属性num_pages:返回页面总数属性

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实现分页功能

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