포도가게의 개발일지

MongoDB pagination 기능 구현 본문

DB

MongoDB pagination 기능 구현

grape.store 2021. 7. 27. 17:01
반응형
import os
from flask import Flask, request, render_template, jsonify
from bson.objectid import ObjectId
import math

app = Flask(__name__)


from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client.cityclone

@app.route("/")
def main():
    return render_template('index.html')

@app.route("/boardlist", methods=['GET'])
def boardlist():
	## ajax에서 url을 넘겨준 키값을 통해 현재 게시물 페이지 넘버 확인가능 ##
    page = request.args.get('page', 1, type=int)
    ## 한 페이지당 10개의 게시물을 보여줌 ##
    limit = 10
    ##skip(배열 또는 리스트 시작숫자)함수 mongoDB 함수 시작부분을 return 시작전 data는 버려짐 ##
	##limit(숫자) 제한된 개수를 return해줌 ##
    board_list = db.images.find({}).skip((page - 1)*limit).limit(limit)
	
    ## db에 저장된 총 게시물의 개수
    tot_count = db.images.find({}).count()
    last_page_num = math.ceil(tot_count / limit)
    
    ## Object형식을 json에 필요한 str형식으로 바꿔주기 위한 decode
    results = []
    for document in board_list:
        document['_id'] = str(document['_id'])
        results.append(document)

    return jsonify({'list': results,
                    'limit': limit,
                    'page': page,
                    'last_page_num': last_page_num})
                    
if __name__ == '__main__':
    app.run(debug=True)

 

Comments