Djano 分页 day3 html_helper.py

day3:

将startr 和 end 值加入html_helper.py 更加方便导入

  

1:????
     11 个 页码

如果 总页数 < 11
    1-总页数

else:
    当前页 < 6:
        1 - 11

    当前页 > 6:
        如果 当前页 + 5 》 总页数
            当前页 + 5 ---  总页数

        当前页 -5 -- 当前页 + 5

2:输入
    page  当前页数
    num     总页数
    per_item 默认值为5

  输出
     start
     end
     all_page_count

3:使用类会产生 start 和 end 页数上数据的起始和结尾的; all_page_count:总页数

  

#!/usr/bin/env python
#coding:utf-8
from django.utils.safestring import mark_safe
class PageInfo:

    def __init__(self,current_page,all_count,per_item=5):
        self.CurrentPage = current_page
        self.AllCont = all_count
        self.PerItem=per_item

    @property
    def start(self):   #页数产生开始的数据
        #start = (page-1)*per_item
        return  (self.CurrentPage-1) * self.PerItem

    @property
    def end(self):     #页数产生结尾的数据
        #end = page*per_item
        return self.CurrentPage * self.PerItem

    @property
    def all_page_count(self):
        """
        tem = divmod(num, per_item) #判断有多少页数,映射再html
        if tem[1] == 0:
            all_page_count = tem[0]
        else:
            all_page_count = tem[0]+1
        """
        tem = divmod(self.AllCont, self.PerItem) #判断有多少页数,映射再html
        if tem[1] == 0:
            all_page_count = tem[0]
        else:
            all_page_count = tem[0]+1
        return all_page_count

def Pager(page,all_page_count):
    """
    page:当前页数
    all_page_count:总页数
    """
    html_stack = []  #html 上的页数堆积
    frist_html = "<a href=‘/start/index/%d‘>首页</a>" %(1)
    html_stack.append(frist_html)

    perv_html = "<a href=‘/start/index/%d‘>上一页</a>" %(page-1)
    html_stack.append(perv_html)

    begin = page - 6
    end = page + 5

    if all_page_count < 11:
        begin = 0
        end = all_page_count
    else:
        if page < 6:
            begin = 0
            end = 11
        else:
            if page + 6 > all_page_count:
                begin = page - 6
                end = all_page_count

            else:
                begin = page - 6
                end = page + 5
    for i in range(begin,end):
        if page== (i+1):
            a_html = "<a style =‘color:red;‘ href=‘/start/index/%d‘>%d</a>" %(i+1,i+1)
        else:
            a_html = "<a href=‘/start/index/%d‘>%d</a>" %(i+1,i+1)
        html_stack.append(a_html)
    next_html = "<a href=‘/start/index/%d‘>下一页</a>" %(page+1)
    html_stack.append(next_html)       

    end_html = "<a href=‘/start/index/%d‘>尾页</a>" %(all_page_count)
    html_stack.append(end_html)

    return mark_safe(‘‘.join(html_stack))#将列表转换为一个大字符串

  按计划做事》》》》》》》》》》》》》》》》

时间: 2024-10-13 06:29:59

Djano 分页 day3 html_helper.py的相关文章

django 分页(2) 使用类 页码显示

django 分页显示页码 views.py 显示11页码 1 2 3 4 5 6 7 8 9 10 11 if 总页数(10) < 11 起始位置 1 - 10总页数 else 总页数 > 11 IF 当前页 小于 6 起始位置 1 结束页 11 IF 当前页 大于 6 IF 如果结束页 > 总页数 起始值 6 - 5 总页数 else 起始值 6 - 5 结束页 6+5 #!/usr/bin/env python #_*_coding:utf-8_*_ from django.sho

django 简单分页

初学django分页, 变量名写的太随意见谅. 1 view.py 2 3 def Index(request,page): 4 page = common(page,1) 5 pageDataCount = 20 6 #data 7 data = models.Host.objects.all() 8 #传入数据量,当前页码数,每页显示多少条数据 9 ret = Pager(data,page,pageDataCount) 10 return render_to_response('day13

Python自动化运维课程学习--Day3

本文为参加老男孩Python自动化运维课程第三天学习内容的总结. 大致内容如下: 1.文件操作 2.字符编码转码相关操作 3.函数 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 python2.7.12 --Python IDE: PyCharm 2016.3.2 一.文件操作: 1.文件操作流程:以只读.写(覆盖写).追加写.读写.追加读写.二进制读写等模式打开文件 ==> 得到文件句柄,并

Python,Day3 - Python基础3

1.函数基本语法及特性 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可

Django - Ajax分页

目前总结了2种方法: 1. Ajax 分页 尼玛各种google,stackoverflow,搞了好久才总结出这个,之前使用Pagination tag loading的方式不好用,并且不能进行ajax提交请求的页面无刷新的方式去分页 1.view.py 1 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 2 from django.shortcuts import render 3 def xxx

Python之路65-Django分页、自定义分页

目录 一.XSS 二.分页1 三.分页2 四.分页3 一.XSS 有下面一段代码,想将这段代码中的字符串渲染到HTML页面中,默认Django是不能这样去操作的 views.py def user_list(request):     page_str = """         <a href="/user_list/?p=1">1</a>         <a href="/user_list/?p=2"

day3 文件操作 seek tell 修改

打开文件的模式: r, 只读模式[默认] w,只写模式[不可读:不存在则创建:存在则删除内容:] a, 追加模式[不可读:不存在则创建:存在则只追加内容:] "+" 同时读写某个文件: r+,可读写文件.[可读:可追加] w+,写读 a+,追加读 "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用) rU r+U "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windo

python 运维自动化之路 Day3

学习内容: 1.集合 2.文件操作 3.字符转编码操作 4.函数介绍 5.作用域.局部与全局变量 6.递归 7.函数式编程介绍 8.高阶函数 1.集合 集合是Python常用的数据类型,集合也是无序的. 特性:去重复 关系测试 格式:set([]) 去重复,例如: a= set([1,2,2,3,3,4,4,]) #集合具有天生去重复的特性!集合的格式:set([]) print (a) 打印结果: C:\Users\hca006\AppData\Local\Programs\Python\Py

Python基础篇-day3

主要内容:字典 集合 文件处理 字符编码 1.字典dict简介dict就是key value值,索引有意义,数据无序 key定义规则:a:不可变--数字.字符串.元组(可变--列表.字典)b:不能重复 定义D = { 'name':'zs', 'age':'12', 'sid':'01'}#增D['wid']='001'D.setdefault('gender','MEN')D.setdefault('gender',[]).append('MEN')D.setdefault('gender',