[내일배움캠프 TIL] 4일차

안떽왕·2023년 3월 16일
0
post-thumbnail

팀프로젝트(팀소개 페이지)

어제 스스로 완성시킨 코드를 집어넣자라는 마음가짐을 가지게 되었고, 그 마음을 유지한채 팀원들과 합류했다.

결론부터 말을 하자면 실패했다. 어제보다는 조금은 나은 기량을 보인것 같긴하지만 결과적으로는 도움을 받아 완성시킨 것이기 때문에 실패했다고 하는것이 맞다. 애초에 내가 맡은 부분이 엄청 영향력이 있던 부분이 아니기도하고.. 그럼 바로 코드리뷰를 하겠다.

<app.py>

from pymongo import MongoClient
from flask import Flask, render_template, request, jsonify, app
client = MongoClient("")
db = client['']
collection = db['']
likes_coll = db['']
personal_like = db[''] # 개인페이지 좋아요 컬랙션
guest = db['']

app = Flask(__name__)

@app.route('/')#메인페이지
def home():
    return render_template('main.html')

# @app.route('/profile')
@app.route('/profile/<string:name>/')
def profile(name):
    return render_template('index.html')

# 메인페이지 데이터 가져오기
@app.route("/data", methods=["GET"])
def load_teammate():
    all_contents = list(collection.find({},{"name":True,"age":True,"gender":True,"mbti":True,"shortDesc":True, "thumbnail":True,'_id':False}))
    return jsonify({'result':all_contents})

# 프로필 페이지 데이터 가져오기
@app.route("/profile/<string:name>/data", methods=["GET"])
def load_profile(name):
    profile = collection.find_one({'name':name},{"_id":False,"shortDesc":False,"thumbnail":False,})
    return jsonify({'result':profile})

# 페이지 좋아요
@app.route("/likes", methods=["GET"])
def like_show():
    like = likes_coll.find_one({},{"_id":False,"like":True,})
    like['like']=int(like['like'])
    return jsonify({'result':like})

#like 수정. front로부터 버튼이 눌린횟수를 받아와 업데이트
@app.route("/likes", methods=["PUT"])
def like_update():
    print(int(request.form['like_give']))
    like_receive= int(request.form['like_give'])#클릭수받음
    old_data=likes_coll.find_one({},{'_id':False,})#DB의 구 like
    new_like=int(old_data['like'])+like_receive#합산
    likes_coll.update_one({'like':old_data['like']}, {'$set':{'like':new_like}})#반영
    return jsonify({'msg':'좋아요가 반영되었습니다'})

# 개인페이지 좋아요
@app.route("/likes/<string:name>/personal", methods=["GET"])
def personal_like_show(name):
    like_P = personal_like.find_one({"name":name},{"like":True,'_id':False,})
    like_P['like']=int(like_P['like'])
    return jsonify({'result':like_P})

#개인페이지 좋아요 업데이트
@app.route("/likes/<string:name>/personal", methods=["PUT"])
def personal_like_update(name):
    like_P_receive= int(request.form['like_give'])#클릭수받음
    old_data=personal_like.find_one({"name":name},{'like':True,'_id':False,})#DB의 구 like
    new_like=int(old_data['like'])+like_P_receive#합산
    personal_like.update_one({'name':name}, {'$set':{'like':new_like}})#반영
    return jsonify({'msg':'좋아요가 반영되었습니다'})

# 방명록 올리기
@app.route("/guestbook", methods=["POST"])
def guestbook_post():
    name_receive = request.form['name_give']
    comment_receive = request.form['comment_give']
    
    
    num_list = list(guest.find({},{'_id':False}))
    num = 1
    if num_list:
        num = int(num_list[-1]['id_'])+1
    doc = {
        'name': name_receive,
        'comment': comment_receive,
        'id_': num
    }
    guest.insert_one(doc)
    
    return jsonify({'msg': 'Saved!'})

# 방명록 보기

@app.route("/guestbook", methods=["GET"])
def guestbook_get():
    all_comments = list(guest.find({},{'_id':False}))[::-1]
    return jsonify({'result': all_comments})

# 방명록 삭제하기
@app.route("/guestbook/<int:id_>", methods=["DELETE"])
def guestbook_delete(id_):
    guest.delete_one({'id_':id_})
    return jsonify({'msg':'good'})

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

확실히 어제보다 양이 늘었다. 오늘 추가된 기능은 방명록 기능과 좋아요 기능이다.

우리가 기획한 좋아요 기능은 인당 한 번만 누를 수 있는 다른 좋아요 기능보다 아무생각없이 그냥 계속 스택이 쌓여가는 좋아요로 만들기로 했다. 맨 처음에는 '그게 의미가 있을까?' 라는 생각도 들었지만 의외로 이 좋아요는 중독성이 강하다! 아무생각없이 누르고만 있는데도 굉장히 재밌었다.

작동 방식은 클릭하면 클릭한 만큼 스택을 계속 쌓다가 해당 화면을 떠났을때 쌓인 클릭 수를 DB에 저장시킨다.

그리고 다시 메인페이지를 마주할때에는 원래의 좋아요와 새로 저장된 좋아요가 합쳐진 좋아요 숫자가 보이게 된다.

미처 말하지 못한 오늘의 내용이많은데 오늘 일정이 바빠서 내일 종합해서 쓰려한다.

profile
이제 막 개발 배우는 코린이

0개의 댓글