TIL 8주 3일차

노우석·2022년 10월 27일

댓글 기능 만들기 도중 문제

댓글 기능을 만드는 도중 난관에 부딪혔다. 기존 강의에서 배웠던 댓글 작성은 게시글 상세 페이지안에 댓글을 작성하는 것이기 때문에 게시글 id값을

탬플릿 환경에서 받을 때 그냥 함수에서 redirect를 써서 url로 넘겨주고 url 안에 id값을 받아서 그걸로 .objects.get(id=id)를 이용하여 변수에

담고 딕셔너리형태로 탬플릿에 보내주면 html 안에서 문법으로 정보를 보여줄 수 있었다.

그러나 지금 내가 만드는 프로젝트는 home 탬플릿 안에 모든 게시물 작성 및 게시물 출력(페이지)가 같은 탬플릿안에 들어가 있기 때문에 따로 url안에

id값을 주더라도 댓글 작성할때만 id값을 받을 수 있고 댓글을 보기위해 정보를 받을때는 id값을 받을 수 없었다.

해결방법 1

이걸 해결하기 위한 가장 간단한 방법은 사실 댓글 작성하는 탬플릿을 새로 만드는거지만 그래서는 게시글 작성과 다를바가 없어져서 철회했다.

해결방법 2

이게 진짜 해결 방법인데 home.view안에 들어간 게시물 정보를 담는 변수를 for문으로 돌려서 꺼내고 그 꺼낸 게시물 정보안에 id값이 같은 댓글 정보를

같이 넣어주고 []를 만들어 리스트형태로 한번에 전달하는 것이였다.

예를 들어

틀린 예

위 같은 경우 urls에서 이미 id값을 받을 수 없기 때문에 id=id로 바꿔도 오류가 발생한다.

맞은 예

이런식으로 post 정보를 for문으로 돌려서 post안에 있는 id값을 이용하여 comment안에 맞는 comment 정보를 담고 이것을 다시

post.comment안에 넣어주고 리스트형태로 append 해준 뒤 이것을 home.html로 보내주었다.

결과

이런식으로 잘 나오는것을 볼 수있다.

profile
중요한건 버그에게 꺾이지 않는 마음

0개의 댓글