django 分页封装

利用django 框架自带的分页工具 Paginator

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage


def get_page_list(datas, page_no=1, page_size=12):
    """
    分页数据
    :param datas
    :return:
    """
    result = {}
    if page_no and page_size:
        paginator = Paginator(datas, page_size)
        try:
            datas = paginator.page(page_no)
        except PageNotAnInteger:
            datas = paginator.page(1)
        except EmptyPage:
            datas = paginator.page(paginator.num_pages)
        page = dict()
        page['total'] = paginator.count
        page['page_count'] = paginator.num_pages
        page['page_no'] = int(page_no)
        page['page_rows'] = range(paginator.num_pages)
        result['page'] = page
    result['datas'] = datas

    return result

通用页面:

{% load i18n %}
<div id="js_turn_page" class="dataPage_cn tr">
    {% if page.page_no > 1 %}
        <a data-page="{{ page.page_no|add:'-1' }}" href="javascript:;" class="turn-page dataPage_prev" direction="prev">&lt;{% trans 'Revios' %}</a>
    {% endif %}
    {% for i in page.page_rows %}
        {% if i|add:'1' == 1 or i|add:'1' == page.page_count %}
            <a data-page="{{ i|add:'1' }}" href="javascript:;" class="turn-page dataPage_number {% ifequal page.page_no i|add:'1' %}dataPage_numberFocus{% endifequal %}">{{ i|add:'1' }}</a>
        {% elif page.page_no|add:'4' == i or page.page_no|add:'-6' == i %}
            ...
        {% elif page.page_no|add:'4' < i or page.page_no|add:'-6' > i %}
        {% elif i|add:'1' == page.page_no %}
            <a data-page="{{ i|add:'1' }}" href="javascript:;" class="turn-page dataPage_number {% ifequal page.page_no i|add:'1' %}dataPage_numberFocus{% endifequal %}">{{ i|add:'1' }}</a>
        {% else %}
            <a data-page="{{ i|add:'1' }}" href="javascript:;" class="turn-page dataPage_number {% ifequal page.page_no i|add:'1' %}dataPage_numberFocus{% endifequal %}">{{ i|add:'1' }}</a>
        {% endif %}
    {% endfor %}
    {% ifnotequal page.page_no page.page_count %}
        <a data-page="{{ page.page_no|add:'1' }}" href="javascript:;" class="turn-page dataPage_next" direction="next">{% trans 'Next' %}&gt;</a>
    {% endifnotequal %}
    {% if jump %}
    <span class="dataPage_goTo">{% trans 'Go to Page' %}:<input type="text" /><input type="button" value="{% trans 'GO' %}" /></span>
    {% endif %}
</div>

翻页 js:

 $('a.turn-page').click(function () {
        var page_no = $(this).data('page');
        $('#page_no').val(page_no);
        var url_param = $('#param_form').serializeObject();
        window.location = genUrl(window.location.href.split('?')[0], url_param);
    });

function genUrl(url, params) {
        var new_params = {}
        for (var key in params) {
            if (params[key]) {
                new_params[key] = params[key]
            }
        }
        return url + '?' + $.param(new_params);
    }

 

转载于:https://my.oschina.net/jamescasta/blog/870244

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值