팀프로젝트 진행사항

    <script>
        function update_profile() {
            let name = $('#name').val()
            let blog = $('#blog').val()
            let mbti = $('#mbti').val()
            let desc = $('#desc').val()
            let img = $('#img').val()
            let merit = $('#merit').val()

            var data = {
                "name": name,
                "blog":blog,
                "mbti":mbti,
                "desc":desc,
                "img":img,
                "merit":merit
            }
            
            var jsonData = JSON.stringify(data);

            fetch("/update/{{ member_id['_id'] }}", {
                method:'PUT',
                headers:{'content-type':'application/json'},
                body:jsonData
            }).then((res) => res.json()).then((data) => {
                alert(data['msg'])
                location.reload()
            })
            
        }
    </script>
    
    <body>
    <div class="container">
        <div class>
            <div class="input-group mb-3">
                <label class="input-group-text" for="size">사진</label>
                <input id="img" type="url" class="form-control" />
            </div>
            <div class="input-group mb-3">
                <span class="input-group-text">이름</span>
                <input id="name" value="{{ member['name']}}" class="form-control" />
            </div>
            <div class="input-group mb-3">
                <span class="input-group-text">블로그 주소</span>
                <input id="blog" value="{{ member['blog']}}" class="form-control" />
            </div>
            <div class="input-group mb-3">
                <label class="input-group-text" for="size">MBTI</label>
                <input id="mbti" value="{{ member['mbti']}}" type="text" class="form-control" />
            </div>
            <div class="input-group mb-3">
                <label class="input-group-text" for="size">장점</label>
                <input id="merit" value="{{ member['merit']}}" type="text" class="form-control" />
            </div>
            <div class="input-group mb-3">
                <label class="input-group-text" for="size">자기소개</label>
                <input id="desc" value="{{ member['desc']}}" type="text" class="form-control" />
            </div>
        </div>
        <div class="d-flex justify-content-around">
            <button type="button" onClick="update_profile()" class="btn btn-light">수정</button>
            <a href="/view/{{ member_id['_id'] }}"><button class="btn btn-light">취소</button></a>
        </div>
    </div>

</body>
@app.route("/update/<id>", methods=["PUT"])
def update_post(id):
    receive = request.get_json()
    name_receive = receive['name']
    blog_receive = receive['blog']
    mbti_receive = receive['mbti']
    img_receive = receive['img']
    desc_receive = receive['desc']
    merit_receive = receive['merit']
    
    doc = {
        'name':name_receive,
        'blog':blog_receive,
        'mbti':mbti_receive,
        'img':img_receive,
        'merit':merit_receive,
        'desc':desc_receive
    }

    db.members.update_one({'_id': ObjectId(id)},{'$set':doc})
    return jsonify({'msg':'수정완료!'})

어제 FormData로 시도했다가 실패해서 데이터를 JSON으로 변환해서 시도해봤더니 잘 작동했다.

 

  • JSON.stringify(): JavaScript 객체를 JSON 문자열로 변환해준다.
  • request.get_json() : JSON 형식으로 전달된 요청 본문은 flask에서 request.get_json() 함수로 받을 수 있다.

 

 

 

 

 

'TIL > WEEK1' 카테고리의 다른 글

WEEK 1. 드디어 첫 프로젝트 끝!  (0) 2023.05.19
WEEK1. POST와 PUT의 차이점  (0) 2023.05.18
WEEK1. REST API  (0) 2023.05.16
WEEK1. Git  (0) 2023.05.15

+ Recent posts