
제가 항해99로 두 번째 수강하여 bucket2 라는 이름으로 데이터를 저장하고 진행하고 있는데, 데이터 저장은 잘 되나 저장한 데이터가 아닌 언파인드라는 이름으로 뜨네요. url을 bucket2로 바꿔보기도 하고 했는데, 잘 모르겠습니다. 어떤 걸 바꿔야지 정상적으로 작동하는지 궁금합니다.
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:sparta@cluster0.frrh6zs.mongodb.net/Cluster0?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/bucket", methods=["POST"])
def bucket_post():
bucket2_receive = request.form['bucket2_give']
bucket2_list = list(db.bucket2.find({}, {'_id': False}))
count = len(bucket2_list) + 1
doc = {
'num':count,
'bucket2':bucket2_receive,
'done': 0
}
db.bucket2.insert_one(doc)
return jsonify({'msg': 'POST(기록) 연결 완료!'})
@app.route("/bucket/done", methods=["POST"])
def bucket_done():
num_receive = request.form['num_give']
db.bucket2.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
return jsonify({'msg': '버킷 완료!'})
@app.route("/bucket", methods=["GET"])
def bucket_get():
bucket2_list = list(db.bucket2.find({}, {'_id': False}))
return jsonify({'buckets2': bucket2_list})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
<script>
$(document).ready(function () {
show_bucket();
});
function show_bucket(){
$.ajax({
type: "GET",
url: "/bucket",
data: {},
success: function (response) {
let rows= response['buckets2']
for(let i = 0; i <rows.length; i++){
let bucket = rows[i]['bucket']
let num = rows[i]['num']
let done = rows[i]['done']
let temp_html=``
if(done == 0) {
temp_html = `<li>
<h2>✅${bucket}</h2>
<button onclick="done_bucket(${num})" type="button" class="btn btn-outline-primary">완료!</button>
</li>`
}else {
temp_html = `<li>
<h2 class="done">✅${bucket}</h2>
</li>`
}
$('#bucket-list').append(temp_html)
}
}
});
}
function save_bucket(){
let bucket2 = $('#bucket').val()
$.ajax({
type: "POST",
url: "/bucket",
data: {bucket2_give:bucket2},
success: function (response) {
alert(response["msg"])
}
});
}
function done_bucket(num){
$.ajax({
type: "POST",
url: "/bucket/done",
data: {num_give:num},
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
</script>
</head>
<body>
<div class="mypic">
<h1>나의 버킷리스트</h1>
</div>
<div class="mybox">
<div class="mybucket">
<input id="bucket" class="form-control" type="text" placeholder="이루고 싶은 것을 입력하세요">
<button onclick="save_bucket()" type="button" class="btn btn-outline-primary">기록하기</button>
</div>
</div>
<div class="mybox" id="bucket-list">
<li>
<h2 class="done">✅${bucket}</h2>
</li>
</div>
</body>
</html>

