티스토리 뷰

프로그래밍

[PYTHON] Python + Tornado Paging

ReturnToHome 2016. 12. 24. 21:37

< .py >

# 한 페이지에 보여질 게시물 갯수
PageSize = 20

 

# 한 페이지에 보여질 페이지 블럭 갯수
PageBlockCount = 10

 

# paging parameter
  searchType = self.get_argument("searchType", "", True)
  searchWord = self.get_argument("searchWord", "", True)

  // 현재 페이지
  currentPage = int(self.get_argument("currentPage", 1, True))
  
  # search logic
  searchQueryStr = ""
  if searchType != "" and searchWord != "":
   if searchType == "TITLE":
    searchQueryStr += "AND article_title like '%%" + searchWord + "%%'"
   elif searchType == "WRITER":
    searchQueryStr += "AND article_write_id like '%%" + searchWord + "%%'"
  
  # paging logic
  pagingQueryStr = ""

 

  // 조회할 게시글 시작 번호 및 끝 번호

  start = ( currentPage - 1 ) * PageSize + 1
  pagingQueryStr = " limit " + str(start - 1) + ", " + str(PageSize)
  
  # article list
  listQueryStr = '''
     SELECT 
      article_seq
      , article_title
      , article_desc
      , article_write_id
      , article_write_date
     FROM 
      board
     WHERE
      article_delete_yn = 'N'
    '''
  
  listQueryStr += searchQueryStr
  listQueryStr += " order by article_seq desc"
  listQueryStr += pagingQueryStr
  
  articleList = self.db.query(listQueryStr)
  
  # 게시물 총 카운트
  totalCount = self.db.execute_rowcount("select article_seq from board where article_delete_yn = 'N'" + searchQueryStr)
  
  # 게시물의 마지막 페이지 : 전체 게시물에 대한 총 페이지
  finalPage = getFinalPage(totalCount, PageSize)
  
  # 시작 페이지 : 현제 페이지에서 보여질 페이지 블럭의 첫번째 페이지

  startPage = getStartPage(currentPage, PageBlockCount)
  
  # 끝 페이지 : 현재 페이지에서 보여질 페이지 블럭의 마지막 페이지
  endPage = getEndPage(startPage, PageBlockCount)
  if endPage > finalPage:
   endPage = finalPage 
  

  self.render("list.html", articleList = articleList, totalCount = totalCount, currentPage = currentPage, searchType = searchType, searchWord = searchWord, startPage = startPage, endPage = endPage, finalPage = finalPage, PageBlockCount = PageBlockCount)

 

 

< list.html >

 

<ul class="pagination" style="float:right;">

  <!-- 이전 버튼 -->
  {% if startPage > PageBlockCount %}
   <li><a href="javascript:goPage('{{ startPage - 1 }}')">&laquo;</a>
  {% end %}

  <!-- xx 부터 xx 전 까지이므로 + 1 해준다. -->
  {% for pageNo in range(startPage, ( endPage + 1 )) %}
      <li {% if pageNo == currentPage %} class="active" {% end %}><a href="javascript:goPage('{{ pageNo }}');">{{ pageNo }}</a></li>
     {% end %}

  <!-- 다음 버튼 -->
  {% if endPage < finalPage %}
   <li><a href="javascript:goPage('{{ endPage + 1 }}');">&raquo;</a>
  {% end %} 
    </ul>



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함