210628-TIL

김예지·2021년 6월 28일
0

숙제 기본 요구사항을 다 충족했다.
페이지 기능을 추가하고싶은데, 과거 승선99할때의 예지가 짠 코드를 다시 봐도 뭐라 짰는지 모르겠다.
왠지 붙여넣고 뚱땅뚱땅하면 될거같은데 괜히 그러고싶지가 않은 부분이라, 곱씹으며 다시 남겨본다.
###파이썬 부분

@bp.route('/api/read_board', methods=['GET'])
@login_required
def read_board():
    total_docs = db.board.count_documents({}) ##total 갯수만.
    page_num = int(request.args.get('pageNum')) ##pageNum변수는 html에서 불러와서 그 값을 page_num에 넣음.

    if page_num == 1: ##page가 1일때
        skip_docs = 0 ##skip해야할 파일은 0개
    else:
        skip_docs = (page_num-1) * 10 ## page 2를 불러올때, 앞의 10개는 skip하고 뒤의 10개를 불러옴.

    boards = list(db.board.find({}).sort("date",-1).skip(skip_docs).limit(10))  ##에러인데 뭘 추가해야하는지 모르겠다.날짜로 sort?? 아니면 index로 sort? #datetime을 import해야함 '%Y/%m/%d %H:%M:%S'를 먼저 정의하나?
    return jsonify({'total': total_docs, 'all_boards': boards})

###html부분

function showBoardList(pageNum) {
  $.ajax({
    url: "/api/read_board?pageNum="+pageNum, // 클라이언트가 HTTP 요청을 보낼 서버의 URL 주소
    data: {}, // HTTP 요청과 함께 서버로 보낼 데이터
    method: "GET", // HTTP 요청 메소드(GET, POST 등)
    dataType: "json", // 서버에서 보내줄 데이터의 타입
    async: false
  }).done(function (json) {
    pagination(pageNum, json['total']);
    var boards=json['all_boards']
    $('#board-list').empty();
    for (var i = 0; i < boards.length; i++) {
      var name,content;
      var id=boards[i]['_id']

      if(boards[i]['post-name'].length>=30){
        name=boards[i]['post-name'].slice(0,27)+'...';
      } else name=boards[i]['post-name']
      var to_html = `<<tr>
<td>${id}</td>
<td><a href="javascript:showPostDetail(${id});">${name}</a></td>
<td>${boards[i]['user_name']}</td>
<td>${boards[i]['date']}</td>
</tr>`
      $('#board-list').append(to_html)
    }
  }).fail(function (xhr, status, errorThrown) {
    alert(errorThrown);
  })
}

function pagination(page, totalCount){
  $('#pagination').empty();
  // page : 현재 페이지, totalCount :  전체 게시물 갯수
  var countList=10; //한 페이지에 출력될 게시물 수
  var countPage=7; //한 화면에 출력될 페이지 수
  var totalPage = parseInt(totalCount / countList);
  var to_html=``;
  if (totalCount % countList > 0) {
    totalPage++;
  }
  if (totalPage < page) {
    page = totalPage;
  }
  var startPage = (parseInt((page-1)/countPage))*countPage+1;
  var endPage = startPage + countPage - 1;
  if (endPage > totalPage) {
    endPage = totalPage;
  }
  if (page > 1) {
    to_html+=`<li><buttontoken interpolation">${page-1})" class="button">Prev</button></li>`
  }else to_html+=`<li><button class="button disabled">Prev</button></li>`

  for (var iCount = startPage; iCount <= endPage; iCount++) {
    if (iCount == page) {
      to_html+=`<li><a href="javascript:showBoardList(${iCount})" class="page active">${iCount}</a></li>`
    } else {
      to_html+=`<li><a href="javascript:showBoardList(${iCount})" class="page">${iCount}</a></li>`
    }
  }
  if (page < totalPage) {
    to_html+=`<li><buttontoken interpolation">${page+1})" class="button">Next</button></li>`
  }else to_html+=`<li><buttontoken interpolation">${totalPage})" class="button disabled">Next</button></li>`
  $('#pagination').append(to_html);
}

내일 다시 보자..바보김예지..

profile
새싹

0개의 댓글