안녕 장고로 웹 개발중인 코린이야
이래저래 찾아보고 AI한테도 물어보고 하면서 만들고 있는데 쉽지가 않네.. 독학이라 그런지 특히 프로그래밍 기법이나 패턴같은걸 잘 몰라서 멍청한 코드를 많이 쓰는거 같아.
아무튼 질문은 이래.
-----------------------------------------------------------
1. 게시판의 게시글을 보여주는 페이지가 있고, 여기서는 게시글 내용과 함께 댓글들을 표시해줌.
2. 댓글을 나타내는 테이블의 DB 구조 중, 테이블 자기 자신을 ForeignKey로 참조하는 'parent'라는 필드를 통해 대댓글일 경우 parent에 이 comments 테이블의 PK(comment_id)를 저장하여 어떤 댓글의 대댓글임을 표시하고 있음. Django 코드는 아래와 같음.
3. 이걸 장고 HTML에서 마지막에 렌더링 하는데 댓글이 50개만 달려도 렌더링 속도가 그에 비례하여 씹창남(거의 0.8초). 쿼리의 문제인가 싶어서 코드를 분석해봤지만 함수나 쿼리의 실행속도 문제는 아니었음(0.02초만에 실행 완료).
4. 문제가 될 만한 부분을 분석해보니, 댓글을 렌더링 하는 구조에서 반복문 안에 반복문이 있는 구조가 문제가 될 것 같아 보임.
5. 댓글과 대댓글을 렌더링 하는 구조가 현재는 이런식이지만, 이걸 개선할 아이디어가 떠오르지 않음.
1) 장고 함수에서 'parent'가 없는 순수 댓글과 'parent'가 있는 대댓글을 따로 HTML(템플릿)에 넘겨줌.
2) 모든 순수 댓글에 대해 반복문을 통해 한개씩 렌더링 함.
3) 2)의 과정중에, 모든 대댓글에 대해 반복문을 통해 만약 대댓글의 parent가 현재 렌더링 중인 댓글의 comment_id(PK)와 일치하면 대댓글을 렌더링 하도록 함.
3)과 같이 parent랑 comment_id(PK)가 일치하건 하지 않건 무조건 반복문을 통해 조건식을 검사하다 보니까 문제가 생기는거 같은데 이걸 어떻게 고칠 방법이 안 떠오르네. 혹시 좋은 아이디어 있을까?
긴 글 읽어줘서 고마워.
무슨책보셈? 유튜브 강의보셈?
처음에 그냥 Do It 파이썬 책 하나랑 생활코딩 HTML 책 하나 들고 시작해서 쭉 독학했어. 이번달 런칭 준비중인데 거의 나 혼자 개발하는거라 쉽지가 않네. 잘 하고 있는건지도 모르겠어서 좀 외롭다 ㅋㅋㅋ
대나나시네.. 국비라도 하시지..왜.. 2) 모든 순수 댓글에 대해 반복문을 통해 한개씩 렌더링 함. <-여기에 답이 있는거 아네여?
대댓글 구현 <- 쳐서 로직 따라가보심이..
이거 런칭하구 자리잡으면 국비나 붓캠 할려구 안그래두. 나도 여기 전공은 아니어서 ㅋㅋㅋㅋ // 저 반복문을 따로따로 돌리면 나도 좋겠는데... 문제는 그렇게 하면 처음 페이지를 로딩할 때, 저 대댓글이 원댓글 밑에 위치하게끔 설계하기가 빡세네. parent==comment_id일 때 댓글 밑에 달리게 해야하는데 원댓글의 반복문 밖에서 그걸 구현할 아이디어가 안 떠올라서 그래.
그래그래 더 찾아봐야겠네. 고마워
이상하네 원래 댓글과 대댓글 많으면 느린게 맞는데
디시가 댓글 고작 500개 달렸다고 로딩이 1초씩 걸리진 않은 것처럼 허용 범위 밖으로 렌더링 속도가 느린거 같아서 그래. 뭐가 문제인지 참 답답하네