zoukankan      html  css  js  c++  java
  • 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 (self.current_page - 1)*10
    
        @property
        def end(self):
            return self.current_page * 10
    
        def page_str(self, all_item, base_url):
            all_page, div = divmod(all_item, 10)
            if div > 0:
                all_page += 1
    
            page_list = []
    
            if all_page <= 11:
                start = 1
                end = 11
            else:
                if self.current_page <= 6:
                    start = 1
                    end = 11 + 1
                else:
                    start = self.current_page - 5
                    end = self.current_page + 6
                    if self.current_page + 6 > all_page:
                        start = all_page - 10
                        end = all_page + 1
            for i in range(start, end):
                if i == self.current_page:
                    temp = '<a style="color:red;font-size:26px;padding: 5px" href="%s?page=%d">%d</a>' % (base_url, i, i)
                else:
                    temp = '<a style="padding: 5px" href="%s?page=%d">%d</a>' % (base_url, i, i)
                page_list.append(temp)
    
            if self.current_page > 1:
                pre_page = '<a href="%s?page=%d">上一页</a>' % (base_url, self.current_page - 1)
            else:
                pre_page = '<a href="javascript:void(0);">上一页</a>'
    
            # 下一页
            if self.current_page >= all_page:
                next_page = '<a href="javascript:void(0);">下一页</a>'
            else:
                next_page = '<a href="%s?page=%d">下一页</a>' % (base_url, self.current_page + 1)
    
            page_list.insert(0, pre_page)
            page_list.append(next_page)
            return mark_safe("".join(page_list))
    
    
    def user_list(request):
        current_page = request.GET.get('page', 1)
        page_obj = Page(current_page)
        # 把方法改造成属性(2),这样在下面调用方法的时候就不需要加括号了
        result = models.UserInfo.objects.all()[page_obj.start:page_obj.end]
        all_item = models.UserInfo.objects.all().count()
        page_str = page_obj.page_str(all_item, '/user_list/')
        return render(request, 'user_list.html', {"result": result, 'page_str': page_str})

     html代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <table>
            {% for line in result %}
                <tr>
                    <td>{{ line.user }}</td>
                    <td>{{ line.password }}</td>
                    <td>{{ line.gender }}</td>
                </tr>
            {% endfor %}
        </table>
    
        <div>
            {{ page_str }}
        </div>
    </body>
    </html>
  • 相关阅读:
    SQL截取字符串函数
    深入SQL截取字符串(substring与patindex)的详解
    用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数
    poi导出Excel报表多表头双层表头、合并单元格
    Java对日期Date类进行加减运算,年份加减,月份加减
    mybatis级联
    mysql Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
    MyBatis学习总结(五)——实现关联表查询
    周六日
    ojdbc.jar
  • 原文地址:https://www.cnblogs.com/yxy-linux/p/5978253.html
Copyright © 2011-2022 走看看