본문 바로가기
내일배움캠프 미니프로젝트1/미니 프로젝트 개발일지

5월 8일 미니 팀과제 1일차

by seed0335 2023. 5. 9.

5월 8일 내일배움캠프(스파르타 코딩클럽) 미니 팀과제 1일차 시작

 

팀과제 내용

개인 사용자간 영화 추천 서비스 제작

 

기능

1. 관람평 등록 기능

index.html : body 데이터 입력

index.html : save 버튼 실행 ▶ 입력된 데이터 post방식으로 app.py로 전송

app.py 백엔드 : post 방식으로 받아서, mongdb에 저장됨

 

2. 관람평 출력 기능

mongdb에 모든 데이터 ▶ get 방식으로 app.py로 가지고 옴 ▶json방식으로 index.html로 보낸 후 출력함

 

app.py 백엔드

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.rsr8xyc.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

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

@app.route("/test", methods=["post"])
def test_post():
   id_receive = request.form['id_give']
   comment_receive = request.form['comment_give']
   doc = {
       'id': id_receive,
       'comment' : comment_receive
   }
   db.comment.insert_one(doc)
   return jsonify({'msg': '저장완료'})

@app.route("/mars", methods=["GET"])
def web_mars_get():
    comment_data = list(db.comment.find({},{'_id':False}))
    return jsonify({'result': comment_data})

if __name__ == '__main__':
    app.run('0.0.0.0',port=5000,debug=True)

 

index.html 프론트 엔드 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
    crossorigin="anonymous"></script>

    <title>Document</title>

    <script>
        $(document).ready(function () {
            show_order();
        });
        function show_order() {
            fetch("/mars").then(res => res.json()).then(data => {
                let rows = data['result']
                rows.forEach((a) => {
                    let name = a['id']
                    let comment = a['comment']

                    let temp_html = `<p>ID : ${name} ---------- 관람평 : ${comment}</p>`
                    $('#page').append(temp_html)
                })
            })
        }

        function save() {
            let id = $('#id').val()
            let comment = $('#comment').val()

            let formData = new FormData()
            formData.append("id_give", id)
            formData.append("comment_give", comment)

            fetch("/test", { method: "post", body: formData }).then(res => res.json()).then(data => {
            alert(data['msg'])})
        }
    </script>
</head>
<body>
    <form method="get">
        <label for="id">아이디 : </label>
        <input type="text" id="id" name="id">
        <label for="comment">관람평 : </label>
        <input type="text" id="comment" name="comment"><br>
        <button onclick="save()">등록</button>
    </form>
    <p id = "page">

    </p>

</body>

</html>

 

댓글