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
            }
复制代码

 

posted @   菲菲菲菲菲常新的新手  阅读(3327)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示