<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      30 自定義分頁組件

      基于bootstrap V3 應(yīng)用
      pager.py:

      """
      如果想要使用分頁,需要以下兩個(gè)步驟
      
      def xxx():
          queryset = models.TransactionRecord.objects.filter(customer_id=pk, customer__active=1).order_by('-id')
      
          pager = Pagination(request, queryset)
      
          return render(request, 'customer_charge.html', {'pager': pager})
      
      頁面上:
      {% for row in pager.queryset %}
          {{row.id}}
          ...
      {% endfor %}
      
      <ul class="pagination">
          {{ pager.html }}
      </ul>
      
      """
      import copy
      from django.utils.safestring import mark_safe
      
      
      class Pagination(object):
          """分頁"""
      
          def __init__(self, request, query_set, per_page_count=10):
              self.query_dict = copy.deepcopy(request.GET)
              self.query_dict._mutable = True
              self.query_set = query_set
      
              total_count = query_set.count()  # 總數(shù)據(jù)條數(shù)
              # 計(jì)算出總共有多少頁面
              self.total_count = total_count
              self.total_page, div = divmod(total_count, per_page_count)
              if div:
                  self.total_page += 1
      
              page = request.GET.get('page')
      
              if not page:
                  page = 1
              else:
                  if not page.isdecimal():
                      page = 1
                  else:
                      page = int(page)
                      if page <= 0:
                          page = 1
                      else:
                          if page > self.total_page:
                              page = self.total_page
      
              self.page = page
              self.per_page_count = per_page_count
      
              self.start = (page - 1) * per_page_count
              self.end = page * per_page_count
      
          def html(self):
              pager_list = []
              if not self.total_count:
                  return ''
              # 極值問題:總共的頁碼數(shù)量
              if self.total_page <= 11:
                  start_page = 1
                  end_page = self.total_page
              else:
                  # 總頁碼比較多,判斷當(dāng)前頁 <=6 : 1~11
                  if self.page <= 6:
                      start_page = 1
                      end_page = 11
                  else:
                      if (self.page + 5) > self.total_page:
                          start_page = self.total_page - 10
                          end_page = self.total_page
                      else:
                          start_page = self.page - 5
                          end_page = self.page + 5
      
              self.query_dict.setlist('page', [1])
              pager_list.append('<li><a href="?{}">首頁</a></li>'.format(self.query_dict.urlencode()))
      
              if self.page > 1:
                  self.query_dict.setlist('page', [self.page - 1])
                  pager_list.append('<li><a href="?{}">上一頁</a></li>'.format(self.query_dict.urlencode()))
      
              for i in range(start_page, end_page + 1):
                  self.query_dict.setlist('page', [i])
                  if i == self.page:
                      item = '<li class="active"><a href="?{}">{}</a></li>'.format(self.query_dict.urlencode(), i)
                  else:
                      item = '<li><a href="?{}">{}</a></li>'.format(self.query_dict.urlencode(), i)
                  pager_list.append(item)
      
              if self.page < self.total_page:
                  self.query_dict.setlist('page', [self.page + 1])
                  pager_list.append('<li><a href="?{}">下一頁</a></li>'.format(self.query_dict.urlencode()))
      
              self.query_dict.setlist('page', [self.total_page])
              pager_list.append('<li><a href="?{}">末頁</a></li>'.format(self.query_dict.urlencode()))
      
              pager_list.append('<li class="disabled"><a>數(shù)據(jù)共{}條{}頁</a></li>'.format(self.total_count, self.total_page))
              pager_string = mark_safe(''.join(pager_list))
      
              return pager_string
      
          def queryset(self):
              if self.total_count:
                  return self.query_set[self.start: self.end]
              return self.query_set
      

      pagination.py--> start組件使用

      """
      使用方式:
      視圖:
          def changelist_view(self, request):
              """列表頁面"""
              # 從數(shù)據(jù)庫中獲取所有的數(shù)據(jù)--->處理分頁
              all_count = self.model_class.objects.all().count()
              query_params = request.GET.copy()
              query_params._mutable = True  # 可以被修改
      
              pager = Pagination(
                  current_page=request.GET.get("page"),
                  all_count=all_count,
                  base_url=request.path_info,
                  query_params=query_params,
                  per_page=self.per_page_count,
              )
      
              data_list = self.model_class.objects.all()[pager.start: pager.end]
      		return render(request, 'changelist.html',{'data_list': data_list,'pager': pager})
      
      頁面上:
      <ul class="pagination">
          {{ pager.page_html|safe }}
      </ul>
      """
      
      
      class Pagination(object):
          def __init__(self, current_page, all_count, base_url, query_params, per_page=20, pager_page_count=11):
              """
              分頁初始化
              :param current_page: 當(dāng)前頁碼
              :param per_page: 每頁顯示數(shù)據(jù)條數(shù)
              :param all_count: 數(shù)據(jù)庫中總條數(shù)
              :param base_url: 基礎(chǔ)URL
              :param query_params: QueryDict對(duì)象,內(nèi)部含所有當(dāng)前URL的原條件
              :param pager_page_count: 頁面上最多顯示的頁碼數(shù)量
              """
              self.base_url = base_url
              try:
                  self.current_page = int(current_page)
                  if self.current_page <= 0:
                      raise Exception()
              except Exception as e:
                  self.current_page = 1
              self.query_params = query_params
              self.per_page = per_page
              self.all_count = all_count
              self.pager_page_count = pager_page_count
              pager_count, b = divmod(all_count, per_page)
              if b != 0:
                  pager_count += 1
              self.pager_count = pager_count
      
              half_pager_page_count = int(pager_page_count / 2)
              self.half_pager_page_count = half_pager_page_count
      
          @property
          def start(self):
              """
              數(shù)據(jù)獲取值起始索引
              :return:
              """
              return (self.current_page - 1) * self.per_page
      
          @property
          def end(self):
              """
              數(shù)據(jù)獲取值結(jié)束索引
              :return:
              """
              return self.current_page * self.per_page
      
          def page_html(self):
              """
              生成HTML頁碼
              :return:
              """
              # 如果數(shù)據(jù)總頁碼pager_count<11 pager_page_count
              if self.pager_count < self.pager_page_count:
                  pager_start = 1
                  pager_end = self.pager_count
              else:
                  # 數(shù)據(jù)頁碼已經(jīng)超過11
                  # 判斷: 如果當(dāng)前頁 <= 5 half_pager_page_count
                  if self.current_page <= self.half_pager_page_count:
                      pager_start = 1
                      pager_end = self.pager_page_count
                  else:
                      # 如果: 當(dāng)前頁+5 > 總頁碼
                      if (self.current_page + self.half_pager_page_count) > self.pager_count:
                          pager_end = self.pager_count
                          pager_start = self.pager_count - self.pager_page_count + 1
                      else:
                          pager_start = self.current_page - self.half_pager_page_count
                          pager_end = self.current_page + self.half_pager_page_count
      
              page_list = []
      
              if self.current_page <= 1:
                  prev = '<li><a href="#">上一頁</a></li>'
              else:
                  self.query_params['page'] = self.current_page - 1
                  prev = '<li><a href="%s?%s">上一頁</a></li>' % (self.base_url, self.query_params.urlencode())
              page_list.append(prev)
              for i in range(pager_start, pager_end + 1):
                  self.query_params['page'] = i
                  if self.current_page == i:
                      tpl = '<li class="active"><a href="%s?%s">%s</a></li>' % (
                          self.base_url, self.query_params.urlencode(), i,)
                  else:
                      tpl = '<li><a href="%s?%s">%s</a></li>' % (self.base_url, self.query_params.urlencode(), i,)
                  page_list.append(tpl)
      
              if self.current_page >= self.pager_count:
                  nex = '<li><a href="#">下一頁</a></li>'
              else:
                  self.query_params['page'] = self.current_page + 1
                  nex = '<li><a href="%s?%s">下一頁</a></li>' % (self.base_url, self.query_params.urlencode(),)
              page_list.append(nex)
              page_str = "".join(page_list)
              return page_str
      
      posted @ 2022-10-10 16:54  角角邊  Views(39)  Comments(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 久久精品日日躁夜夜躁| 国产亚洲一区二区三区av| 免费视频成人片在线观看 | 久久精品伊人波多野结衣| 无码AV无码免费一区二区 | 日本精品不卡一二三区| 湘西| 日韩精品福利视频在线观看| 国产精品一码二码三码| 好吊视频一区二区三区| 天堂网在线.www天堂在线资源| 中文字幕精品亚洲字幕成| 午夜一区二区三区视频| 日韩欧美在线综合网另类| 91精品国产蜜臀在线观看| 日韩精品亚洲精品第一页| 亚洲av永久无码天堂影院| 色一伊人区二区亚洲最大| 亚洲精品自拍在线视频| 亚洲AV无码一二区三区在线播放| 国产在线国偷精品免费看| 熟女丰满老熟女熟妇| 国产精品日韩中文字幕| 精品日韩亚洲AV无码| 无码福利写真片视频在线播放| 国产午夜精品福利免费不| 欧美s码亚洲码精品m码| 一本色道久久东京热| 久久精品午夜视频| 亚洲欧洲久久激情久av| 日韩精品18禁一区二区| 大屁股肥熟女流白浆| 国产精品国产三级在线专区| 好男人社区影视在线WWW| 科尔| 人妻中文字幕精品系列| 国厂精品114福利电影免费| 宣化县| 久久精品午夜视频| 国产成A人片在线观看视频下载 | 国产破外女出血视频|