Django之自定义分页

class PageInfo(object):
    def __init__(self,current_page,all_count,per_page,show_page=11):
        try: #如果用户传入的页码异常 就让页码=1
            self.current_page=int(current_page)
        except Exception:
            self.current_page = 1
        self.show_page=show_page
        self.per_page=per_page
        a,b=divmod(all_count,per_page)  #计算显示数据库一共需要 多少总页码
        if b:
            a=a+1
        self.all_page=a

    def start(self):
        return (self.current_page-1)* self.per_page

    def stop(self):
        return self.current_page*self.per_page

    def pager(self): #该方法专门用于 在前端显示页码

        half=int((self.show_page-1)/2)

        #如数据库 数据条目 小于 11条
        if self.all_page < self.show_page:
            begin=1
            stop=self.all_page+1
        else:
            #如果当前页小于=5  起始页再减去5就是负数了那么  就 显示0-11页码
            if self.current_page<=half:
                begin =1
                stop=self.show_page+1
            else:
                begin=self.current_page-half
                stop=self.current_page+half+1
        page_list = []
        if self.current_page<=1:  #如果当前页是1了就不要在上一页了
            b = ‘<a href="/custom.html?page=#">上一页</a>‘
        else:
            b=‘<a href="/custom.html?page=%s">上一页</a>‘%(self.current_page-1)
        page_list.append(b)
        for i in range(begin,stop):
            if i ==self.current_page:
                temp=‘<a style="display: inline-block;padding: 5px;margin: 5px;background-color: bisque" href="/custom.html?page=%s">%s</a>‘%(i,i)
            else:
                temp = ‘<a style="display: inline-block;padding: 5px;margin: 5px;background-color:blueviolet" href="/custom.html?page=%s">%s</a>‘% (i,i)

            page_list.append(temp)
        return ‘‘.join(page_list)

def custom(request):
    all_count=models.UserInfo.objects.all().count()#计算一共 数据库中一共多少条数据
    user_info=PageInfo(request.GET.get(‘page‘),all_count,10)
    user_list=models.UserInfo.objects.all()[user_info.start():user_info.stop()]

    return render(request,‘custom.html‘,{‘user_list‘:user_list,‘page_info‘:user_info})

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
{% for row in user_list %}
          <li>{{ row.name }}</li>
{% endfor %}
 </ul>
{{ page_info.pager|safe}}
{#     把Python的对象传入模板,自动执行,|safe 显示#}
</body>

</html>

时间: 2024-12-11 00:55:52

Django之自定义分页的相关文章

django 自定义分页模块

django 自定义分页模块 from django.shortcuts import render, HttpResponse, redirect from django.utils.safestring import mark_safe class Page(object): def __init__(self, current_page): self.current_page = int(current_page) @property def start(self): return (se

Django自定义分页、bottle

一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1">1</a>,将page的值传送到函数/user_list/中,后端在user_list中通过request.GET.get('page',1)获取当前页; 3.从数据库中获取特定行的数据,使用result = models.UserList.objects.all()[start:end]获取,

Django 自定义分页类

分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypage page_obj = mypage.Page(total_num, current_page, 'publisher_list') publisher_list = data[page_obj.data_start:page_obj.data_end] page_html = page_obj.

Django学习手册 - 初识自定义分页

核心: <a href='http://127.0.0.1:8000/index-%s'>%s<a> 自定义分页 1.前端处理字符 后端的字符  return render(request,"index.html",{"l传到前端的数据":list}) {{ 传到前端的数据 | safe}} 2.后端处理字符 导入处理的模块 from django.utils.safestring import mark_safe mark_safe(需要处

8.2 Django 分页组件替换自定义分页

Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ class Pagination(object): def __init__(self, current_page, all_count, base_url, params, per_page_num=8, pager_count=11, ): """ 封装分页相关数据 :par

python/Djangof分页与自定义分页

python/Djangof分页与自定义分页 Django分页 1 ##============================================分页======================================================= 2 # current_pagc = request.GET.get('page') 3 # from django.core.paginator import Paginator,Page 4 # # result = m

Python之路【第十九篇】自定义分页实现(模块化)

自定义分页 1.目的&环境准备 目的把分页写成一个模块的方式然后在需要分页的地方直接调用模块就行了. 环境准备Django中生成一个APP并且注册,配置URL&Views 配置URL from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^user_lis

Djano 自定义分页效果

Django本身提供了一个分页的类,直接导入就可以使用,不过这个方法只能在Django里面使用.武sir在大家从头写了一个自定义分页的类.这个类的实现的方法和内容基本上可以作为模板在任何语言里面使用,只需要修改对应的语法即可. pagenation.py __author__ = 'Administrator' from django.utils.safestring import mark_safe #上一篇说了,这是为了XSS的自动保护机制,为了让前端模板识别我们传递的html或者js格式字

01: 自定义分页

目录: 1.1 自定义分页 1.2 Django自带分页 1.1 自定义分页返回顶部 1.创建步骤 第一步:创建views.py视图函数 第二步:user_list.html网页文件 第三步:utils/pagination.py文件中写Page类处理分页插件 2.定义插件说明 注:utils文件夹需要自己在Django项目下创建 1. 为了防止xss攻击,网站前台收到数据默认都是字符串 2. 可以使用mark_safe模块在前台html文件中或在后台python文件中指定将这些字符串解释成ht