😃 Today I Leaned
- 팀 소개 웹 페이지 _ 소개 페이지 이동, 댓글 CRUD 작업
팀 소개 웹 페이지 _ 소개 페이지 이동
팀 소개 메인페이지에서 각자 프로필을 클릭하면
자신을 소개하는 페이지로 이동을 하도록 구상하였다.
Object값으로 저장되는 _id를 string 형식으로 변경해 주기 위해 str(i[_id]) 형식을 이용하였다
먼저 GET 방식을 통하여 DB에 저장되어 있는 팀원들의 정보를 불러왔다
DB 생성 시 부여되는 ID값을 이동하려는 페이지의 URL 주소에 해당 값을 붙여
각각의 페이지를 식별해 주었다.
render_template을 이용해 페이지 이동과 동시에 고유의 ID값을 함께 넘겨주었다.
template 변수를 사용할 때 {{변수|tojson}}을 사용하여 json형식으로 그대로 받아온다.
(서버에서 딕셔너리나 json 형식으로 값을 보낼 때 값을 이상하게 받기 때문에 사용)
받아온 ID값을 팀원들의 고유 ID와 비교와 일치하는 팀원의 정보를 출력한다
👉고유 ID를 활용한 방법으로 팀원들 각자의 소개 페이지로 연결할 수 있다!
팀 소개 웹 페이지 _ 댓글 CRUD 작업
자신을 소개하는 페이지로 이동을 하였을 때 댓글을 남길 수 있다.
이 방법 또한 고유한 ID값을 이용하여 작업을 하였다
댓글을 입력하는 해당 페이지의 팀원의 ID값과 댓글을
POST방식을 사용해 DB에 값을 저장을 해준다.
ID값을 같이 저장해 주는 이유는 각자의 페이지에 달린 댓글을 구분해 주기 위해서
페이지가 로딩될 때 DB에 저장된 ID값과 해당 페이지의 ID값을 비교해
같을 경우 댓글을 출력해 준다.
수정 버튼을 클릭했을 경우, 댓글이 textarea로 변경되고
수정이 완료된 후 확인 버튼을 클릭하면 해당 댓글의 ID를 찾아
POST 방식을 통해 해당 댓글을 update 시켜준다.
json형식으로 저장된 ID를 Object로 변환하기 위해서는
ObjectIID(변수)를 사용한다.
삭제 버튼을 클릭했을 경우, POST 방식으로 해당 댓글의 ID값이 넘어가 delete 된다.
⭐알게 된 점⭐
템플릿 언어
- Jinja는 Django 템플릿을 모델로 한 Python용 템플릿 언어 -> 플라스크에서도 사용 가능
- 동적 웹 페이지를 구성할 때, 서버에서 곧바로 웹페이지 로딩과 동시에
변수값을 html이나 js에 할당하고 싶을 때 사용해 변수 값을 할당할 수 있음
[app.py]
return render_template("index.html", words=words, msg=msg)
[html]
let words = {{ words|tojson }};
MongoDB ObjectId
- ObjectId를 String으로
a['_id'] = str(a['_id'])
- String을 ObjectId로
from bson import ObjectId
'_id':ObjectId(id_receive)
🐰 END
Flask를 사용해 처음 프로젝트를 진행해 보는데
전에 학습했던 지식들이 바탕이 되어 큰 무리 없이 진행되었다!
각자 소개 페이지로 넘어가는 부분에서 ID값을 어떻게 넘겨주는지에 대한 고민을 제일 많이 했다.
이렇게 맡은 부분의 Backend 기능은 거이 마무리가 되었다