1st 미니프로젝트 설명(전은규)

프로젝트 이름 : 오늘의 칼로리
자신이 먹은 음식에대한 칼로리 계산, 관리 다이어트와 건강관리가 용이한 사이트를 만드는 것이 목표

대표 기능:
로그인,회원가입,
음식사진등록,전체 음식사진 리스트업,
마이프로필 등록,내가 올린 음식사진만 리스트업,
일별로 내가 올린음식 칼로리의 합 계산

내가 맡은 부분
profile 마이페이지 부분

1.

@app.route('/profile')

token_receive = request.cookies.get('mytoken')
payload = jwt.decode(token_receive, SECRET_KEY, algorithms=['HS256'])
 return render_template("profile.html", status=status_receive, userid=payload['id'])

프로필 페이지 띄움
로그인 된 아이디 값을 받아와서 render 페이지에 보내준다.
status 값은 index(메인 오늘의 칼로리페이지) 에서 받아오는데
status값이 old 이면 프로필을 입력 한상태 new이면 프로필이 미입력된상태이다.

2.

@app.route('/api/send', methods=['GET'])

profiles = list(db.todayKcal.find({"myid": payload['id']}, {'_id': False}))
        if (profiles == []):
            status = 'new'
        else:
             status = 'old'
        return jsonify({'status': status})


메인페이지에서 mypage를 눌렀을때 status 값을 판별해서 보내주게 된다.
status 값이 new 일때

프로필 입력기 창이 나타나고
status 값이 old 일때

프로필을 뿌려주며 프로필 수정기 창이 나타난다.

3.

@app.route('/api/profile_post', methods=['POST'])

bmiscore = math.trunc(w / (h * h) * 10000)
  bmi = ""
  if (bmiscore > 30):
      bmi = "비만"
  elif (bmiscore >= 25):
      bmi = "과체중"
  elif (bmiscore >= 19):
      bmi = "정상"
  else:
      bmi = "저체중"


프로필 입력시에 키 몸무게 목표칼로리를 입력 해야 하고 빈칸으로 입력시에 alert창을 띄운다. 등록 할때 bmi 지수도 계산되어서 같이 DB에 들어가게 된다.

4.

@app.route('/api/profile', methods=['GET'])

profiles = list(db.todayKcal.find({"myid": myid_receive}, {'_id': False}))


그 아이디값에 맞는 프로필 리스팅

5.

@app.route('/api/profile_cal', methods=['GET'])

agg_result = db.foodInfo.aggregate(
        [
            {
                "$match": {'user_info': myid_receive}
            },
            {
            "$group":
                {
                "_id":{"user_id":"$user_info",
                       "date":"$food_date"},
                 "total": {"$sum": "$food_kcal"}
                 }},
            {
                "$sort": {"date": -1}
            },


        ])


프로필 칼로리 계산 과 목표칼로리와 차이를 계산해서 뿌려준다.(가장 힘들었던 부분)

6.

@app.route('/api/profile_adjust', methods=['POST'])

db.todayKcal.update_one({'myid': myid_receive}, {'$set': {'height': int(height_receive)}})
   db.todayKcal.update_one({'myid': myid_receive}, {'$set': {'weight': int(weight_receive)}})
   db.todayKcal.update_one({'myid': myid_receive}, {'$set': {'goal_cal': int(goal_cal_receive)}})
   db.todayKcal.update_one({'myid': myid_receive}, {'$set': {'bmi': bmi}})
   db.todayKcal.update_one({'myid': myid_receive}, {'$set': {'bmiscore': int(bmiscore)}})


status 값이 old라면 수정기가 나오고 프로필을 수정할수 있다.

7.

@app.route('/api/profile_food', methods=['GET'])

foodInfos = list(db.foodInfo.find({"user_info":myid_receive}, {'_id': False}).sort("now", -1))


음식사진 출력 로그인된 아이디의 음식사진만 출력

좋은 웹페이지 즐겨찾기