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
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM