댓글 기능 만들기

Red_Panda·2021년 4월 1일
0

이번에는 질문글, 답변글 등 해당 글에 대해서 의견을 말할 수 있는 댓글 기능을 만든다.


댓글 모델을 작성했다.
댓글 모델은 댓글 고유번호, 댓글작성자, 댓글 내용, 작성일시, 수정일시, 질문에 댓글을 다는 경우, 답변에 댓글을 다는 경우로 구성 되어있다.

모델이 추가 되었으니 이번에도 migrate, upgrade 명령 완료.

질문글 수정, 삭제 밑부분에 질문 댓글에 해당하는 부분을 추가했다.
comment class는 댓글을 작게보여주는 클래스로 CSS를 별도로 작성해야한다.

style.css에 댓글마다 상단에 점선을 추가하고, 폰트 사이즈를 0.7em으로 설정하는 기능을 추가 했다.


forms.py에 댓글 form 추가.


comment_views.py 생성후 create_question 함수를 작성했다. 이 함수는 댓글 작성하기 링크에 해당한다. 이는 함수 이름에서 알 수 있듯이 질문글에 댓글 다는 경우다.


블루프린트에 comment_views.py 파일 추가~

templates/comment/comment_form.html을 생성하고 질문 댓글 템플릿을 작성했다.

이제 질문 댓글 수정함수, 삭제 함수만 만들면 질문글에 대한 댓글기능이 완성된다.


댓글 수정 함수다. 현재 로그인 상태에서만 수정 및 삭제가 가능하도록 했기 때문에, 등록함수와 다르게 수정함수에는 @login_required를 넣어줬다. 맨위에 flash도 import 해줘야한다.


삭제 함수도 마찬가지로 @login_required를 넣어줬다.

책에서는 이제 질문 댓글 기능에 대한 내용은 끝났다.
책과는 조금 다르게 했기 때문에, 비로그인 상태일때도 댓글을 다는 경우를 처리 해주면된다.

먼저 로그인을 하지 않았을 경우, user_id는 없다. 그래서 nullable=False를 True로 변경해주고, migrate, upgrade를 해줬다.

그 다음으로 comment.user.id가 있을때는 username 출력, 없을때는 ip주소 출력하도록 했다.

비로그인 상태에서의 댓글


test1 로그인 상태에서의 댓글 수정, 삭제 버튼이 보인다.


댓글을 수정 했을때 수정 날짜와 함께 출력된다.


다른 아이디로 로그인 했을때 댓글

이제 질문 댓글처럼 답변에 대한 댓글도 구현하면 된다.

근데.. 어느새 비로그인 상태일때 답변이

이렇게 길어진다.. 일단 로그인 상태에서는 잘 출력된다.
비로그인 상태에서 출력할때 뭔가가 잘못된 것이 분명하다.
아까 question_detail.html에 코드를 추가하면서 div의 짝들이 이리저리 꼬였었다.
다행히 원래대로 고쳤다.


question_detail.html에 답변 댓글목록과 댓글 입력 링크를 추가했다. 질문 댓글을 작성할때와 매우 비슷하다.

comment_views.py에 from pybo.models import Answer를 추가해주고 comment_views.py에 함수들을 추가해줬다.

답변 댓글 등록 함수


답변 댓글 수정 함수


답변 댓글 삭제 함수



답변 댓글 기능 테스트 완료~~

profile
신입 개발자

1개의 댓글

comment-user-thumbnail
2022년 11월 16일

안녕하세요 혹시 코드복사좀 할 수 있을까용 ㅠ

답글 달기