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))
음식사진 출력 로그인된 아이디의 음식사진만 출력
Author And Source
이 문제에 관하여(1st 미니프로젝트 설명(전은규)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@stravinest/1st-미니프로젝트-설명전은규저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)