django分页及搜索后如何翻页

django自带了Pagnator

导入

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

分页

def pagn(data, limit, page):#分页
  paginator = Paginator(data, limit)
  try:
    data = paginator.page(page)
  except PageNotAnInteger:
    data = paginator.page(1)

  except EmptyPage:
    data = paginator.page(paginator.num_pages)
  return data

搜索后翻页的时候由于搜索参数不会一起跟着传递,所以我们需要在js里面加上搜索参数

我的方法是通过window.location.href返回当前的url路径,如果有page去掉,加上page=拼接成新的url,该url了里包括了之前的搜索参数

        function getUrl(){
            var current_url = window.location.href;
            var params = current_url.split('?');
            var url =  '';
            //没有参数
            if (params.length == 1){
                url += '?'
            }
            else {
                for (i = 0; i < params.length; i++) {
                    if (params[i].indexOf('page') == -1) {
                        if (i==0){
                            url += params[i] + '?'
                        }else{
                            url += params[i] + '&'
                        }
                    }
                }
            }
            return url
        }

href里面必须要是这样的127.0.0.1:8000/xxx而不能是127.0.0.1:8000/这样会报错/xxx&page=2是正确的路径,/&page=2是错误的路径,django无法解析

            //下一页
            function nextPage(node) {
                var url = getUrl()
                {% if datas.has_next %}
                    var href = url+"page={{ datas.next_page_number}}"
                {% else %}
                    var href = url+"page={{ datas.number }}"
                {% endif %}
                node.href = href
            }
            function previousPage(node) {
                var url = getUrl()
                {% if datas.has_previous %}
                    var href = url+"page={{ datas.previous_page_number}}"
                {% else %}
                    var href = url+"page={{ data.number }}"
                {% endif %}
                node.href = href
            }
            function page(node) {
                var url = getUrl()
                node.href = url+'page='+node.text
            }
            function turnPage(node){
                var page = $("#input_page").val()
                var url = getUrl()
                node.href = url+'page='+page
            }
原文地址:https://www.cnblogs.com/lgh344902118/p/6855683.html