숙제 기본 요구사항을 다 충족했다.
페이지 기능을 추가하고싶은데, 과거 승선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);
}
내일 다시 보자..바보김예지..