아래는 우리가 구현하기로 했던 기능들이다.(url등은 생략)

여기서 내 기능만 얘기하자면, 북마크 여부 확인을 위해 get api를 추가했다.
기획 시 넣으려고 했던 기능들을 완전하게 구현하고 온전한 사이트를 구축한 것이 가장 큰 성과이다.
팀원분이 원하신 지금 시점 자체에서도 서비스 구현이 가능한 사이트를 만들어 낸 것 같아서 기쁘다.
✅ 라우팅? 음..아무튼 각 데이터별 페이지 이동
✅ 회원 가입 시 회원들의 정보와 db매칭
✅ 댓글 삭제, 수정(+익명으로 할지 말지?)
✅ 좋아요 누른 것만 모아보기, 좋아요 취소
⬜ 페이징
✅ ui
위의 목록은 저번 미니 프로젝트에서 내가 앞으로 구현했으면 하는 것들을 적어둔 것이다.
구현한 기능들을 체크해 봤는데, 다행히도 심화반 강의로 대부분 커버가 되는 기능들이었다.
(수정은 넣지 않았지만 시도했다면 충분히 구현할 수 있었을 것 같긴 하다.)
이번 프로젝트로 베이스를 잘 깔아뒀으니 기능을 알차게 추가할 일만 남았다.
다만 CSS는 전반적으로 다시 손을 봐야 하고 자바로 컨버팅하는 작업도 난항이 예상된다.
일단 튜터님께서 코드 정리를 잘 해뒀으니 옮기는 데에 큰 어려움이 있을 것 같진 않고 매개변수를 줄이는 작업을 하는 게 좋다고 하셔서 다음 프로젝트에서는 이 부분들을 신경 써서 하고 싶다.
아래는 이번 발표회에서 내가 자랑한 코드이다.
저번 TIL이었던가? 썼었는데 오류를 두 번 만났던 코드라 기억에 남았다.
(이거 옮기다가 새삼 생각한건데 왜 date로 내림차순 넣었는데 반복문 넣으니까 순서가 뒤바꼈지? 이건 내일 확인해보는 걸로...)
# model
class DetailContents():
@staticmethod
def find_bookmark_post(user_id): # detail_control에서 사용
return db.action.find({"user_id": user_id}, {"_id": False, "bookmark_post_id": True})
@staticmethod
def find_post(post_id): # detail_control에서 사용
return news.find_one({'post_id': int(post_id)}, {'_id': False})
# view
def show_bookmark(userid):
return ProfileHandler.posts_get(userid)
# control
class ProfileHandler:
@staticmethod
def posts_get(user_id_receive):
""" -yj
DB의 news_data 컬렉션에서 북마크한 기사 리스트를 최근 시간 순으로 가져오기
:param user_id_receive: 로그인한 사용자 ID
:return: 성공 여부, 기사 리스트
"""
try:
# 해당 사용자가 북마크한 기사 ID 필드 가져오기
bookmark_post_ids = list(DetailContents.find_bookmark_post(user_id_receive).sort("date", -1).limit(20))
bookmarked_posts = []
for r in bookmark_post_ids:
if r: # 해당 컬렉션에 다른 필드도 함께 있어서 기사 ID가 있는 경우에만 기사를 찾아 넣도록 처리
bookmarked_posts.append(DetailContents.find_post(r["bookmark_post_id"]))
return jsonify({"result": "success", "posts": bookmarked_posts})
except (jwt.ExpiredSignatureError, jwt.exceptions.DecodeError):
return redirect(url_for("home"))
// 북마크 기사 가져오기
function posts_get(user_id) {
$("#comment-box").empty()
$.ajax({
type: "GET",
url: `/posts_get?user_id_give=${user_id}`,
data: {},
success: function (response) {
if (response["result"] == "success") {
let posts = response["posts"].reverse()
for (let i = 0; i < posts.length; i++) {
let post = posts[i]
let temp_html = `<div class="bookmark_post box" id="${post["post_id"]}">
<a href="/detail/${post["post_id"]}">${post["title"]}</a>
</div>`
$("#comment-box").append(temp_html)
}
}
}
})
}
Git merge 종류 Squash랑 Rebase중 고민...
JS에서 타입 확인하는 법 typeof()