[web]책 리뷰 페이지
책 리뷰 페이지
Python, MongoDB, Flask, html, css, js 를 사용하여 만든 책 리뷰 페이지입니다.
깃허브 : https://github.com/ksmlucky/BookReviewPage/tree/main
진행 과정
app.py 부분
Flask와 MongoDB Import해줍니다.
Flask와 MongoDB Import해주기
from flask import Flask, render_template, jsonify, request app = Flask(__name__) from pymongo import MongoClient client = MongoClient('localhost', 27017) db = client.dbbookreview
## HTML 화면 보여주기, HTML을 주는 부분, 'index.html' 파일을 쭉 읽으라는 뜻 @app.route('/') def home(): return render_template('index.html')
API 역할을 하는 부분을 만들어 줍니다.
API 역할을 하는 부분
@app.route('/review', methods=['POST']) def write_review(): # title_receive로 클라이언트가 준 title 가져오기 title_receive = request.form['title_give'] author_receive = request.form['author_give'] review_receive = request.form['review_give'] # DB에 삽입할 review 만들기 doc = { 'title': title_receive, 'author': author_receive, 'review': review_receive } # reviews에 review 저장하기 db.bookreview.insert_one(doc) # 성공 여부 & 성공 메시지 반환 return jsonify({'result': 'success', 'msg': '저장이 완료되었습니다!'}) @app.route('/review', methods=['GET']) def read_reviews(): # 1. DB에서 리뷰 정보 모두 가져오기 reviews = list(db.bookreview.find({}, {'_id': False})) # 2. 성공 여부 & 리뷰 목록 반환하기 return jsonify({'result': 'success', 'reviews': reviews})
index.html 부분
리뷰를 작성하는 부분의 함수를 만들어 줍니다.
makeReview() 함수
function makeReview() { // 1. 화면에 입력어 있는 제목, 저자, 리뷰 내용을 가져옴 let title = $("#title").val(); let author = $("#author").val(); let review = $("#bookReview").val(); // 2. 제목, 저자, 리뷰 중 하나라도 입력하지 않았을 경우 alert // 3. POST /review 에 저장(Create)을 요청 $.ajax({ type: "POST", url: "/review", data: {title_give: title, author_give: author, review_give: review}, success: function (response) { if (response["result"] == "success") { alert(response["msg"]); window.location.reload(); } } }) }
리뷰를 보여주는 부분의 함수를 만들어 줍니다.
showReview() 함수
function showReview() { // 1. 리뷰 목록을 서버에 요청하기 // 2. 요청 성공 여부 확인하기 // 3. 요청 성공했을 때 리뷰를 올바르게 화면에 나타내기 $.ajax({ type: "GET", url: "/review", data: {}, success: function (response) { if (response["result"] == "success") { let reviews = response['reviews']; for(let i = 0; i < reviews.length; i++) { let title = reviews[i]['title']; let author = reviews[i]['author']; let review = reviews[i]['review']; let temp_html = `<tr> <td>${title}</td> <td>${author}</td> <td>${review}</td> </tr>` $('#reviews-box').append(temp_html); } } else { alert("리뷰를 받아오지 못했습니다"); } } }) }
페이지 안내
제목, 저자, 리뷰를 입력한 후에 '리뷰 작성하기' 버튼을 누르면 페이지 하단에 기록이 되고 DB로 넘어갑니다.
아쉽게 아직 AWS로 포트는 열지 않아서 저 혼자만의 책 리뷰 페이지가 되었네요,,,
깃허브 : https://github.com/ksmlucky/BookReviewPage/tree/main
Author And Source
이 문제에 관하여([web]책 리뷰 페이지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ksmlucky/web책-리뷰-페이지저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)