카테고리 없음

[5주차]스파르타코딩클럽 웹개발 종합반 1

tft4rollz 2022. 10. 25. 14:33

5-1

본격적으로 들어가기 전에 파일질라 설치를 하고 가비아 회원가입 및 도메인을 만들었다.

 

5-2

buket 폴더에 새 프로젝트를 만든 후 폴더 세팅, index.html, app,py 파일을 만들고 인터프리터를 설치했다.

 

5-3 

버킷리스트 app.py와 index.html를 복붙했다.. ㅋㅋㅋ

 

5-4 [버킷리스트] - POST 연습(기록하기)

이전에 했던 것들이랑 비슷하게 코드를 짜준다!

근데 처음 보는 함수가 생겼다 len()

버킷리스트에서 번호와 완료여부를 보고 체크 할 수 있어야 해서 리스트의 요소 개수를 구할 수 있는 len() 함수가 들어갔다

그리고 doc 안에 넘버를 알 수 있게 num = 0 이 추가되었고 완료 여부도 알 수 있게 done = 0 도 추가됬다.

@app.route("/bucket", methods=["POST"])
def bucket_post():
    bucket_receive = request.form['bucket_give']

    bucket_list = list(db.bucket.find({}, {'_id': False}))
    count = len(bucket_list) + 1

    doc = {
        'num' : 0,
        'bucket' : bucket_receive ,
        'done' : 0
    }
    db.bucket.insert_one(doc)

    return jsonify({'msg': '등록 완료!'})

index.html는 이전과 정말 다른게 없어서 금방 끝났다.

function save_bucket(){
    let bucket = $('#bucket').val()
$.ajax({
type: "POST",
url: "/bucket",
data: {bucket_give:bucket},
success: function (response) {
alert(response["msg"])
    window.location.reload()
}
});
}

 

5-5 [버킷리스트] - GET 연습 (보여주기)

app.py 는 추가된 것 없이 전체리스트를 불러오기만 하면 되서 빠르게 끝났다.

@app.route("/bucket", methods=["GET"])
def bucket_get():
    bucket_list = list(db.bucket.find({}, {'_id': False}))
    return jsonify({'buckets':bucket_list})

index.htmi는 꽤 많이 추가됬다.

먼저 콘솔로 buckets이 잘 내려오는지 확인 해 준다.

$(document).ready(function () {
    show_bucket();
});
function show_bucket(){
    $.ajax({
        type: "GET",
        url: "/bucket",
        data: {},
        success: function (response) {
            console.log(response['buckets'])
        }
    });
}

검사로 확인 했더니 bucket : '버킷리스트' , done 0 , num 1 이 출력된다. bucket, done , num을 이용하면 될 것 같다.

function show_bucket(){
$.ajax({
type: "GET",
url: "/bucket",
data: {},
success: function (response) {
    let rows = response['buckets']
    for (let i =0 ; rows.length ; i++){
        let bucket = rows[i]['bucket']
        let num =rows[i]['num']
        let done = rows[i]['done']
        let temp_html = ``

그런데 버킷리스트에서 달성이 안 된 것들은 완료! 라는 버튼이 없고 달성이 된 것들은 완료! 라는 버튼이 없다.

그래서 if문을 써서 done == 0 이면 완료!라는 버튼이 같이 출력되게 만들고 0이 아니면 완료라는 버튼이 없이 출력되게 만들어 준다.

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)

결과물

 

5-6 [버킷리스트] - POST연습 (완료하기)

(서버 파일)

버킷 번호를 받아서, 업데이트 하면 된다.

그런데 num_recevie는 문자열로 들어오니, 숫자로 바꿔주는 것이 좋다.

num_recevie에 int() 를 붙임으로서 숫자로 인식되게 해 줄수 있다.

db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})

최종 결과물

@app.route("/bucket/done", methods=["POST"])
def bucket_done():
    num_receive = request.form['num_give']
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})

(클라이언트 파일)

버킷 넘버를 보여주면 된다. 버킷넘버는 HTML이 만들어질 때 적히게 된다.

data: {num_give:num},

최종 결과물

function done_bucket(num){
$.ajax({
type: "POST",
url: "/bucket/done",
data: {num_give:num},
success: function (response) {
alert(response["msg"])
    window.location.reload()
}
});
}

 

이렇게 해서 버킷리스트 프로젝트가 끝이났다.

이건 좀 많이 어려워서 복습떄 제대로 연습 해 봐야 할 것 같다 ㅠㅠ