* 추가할 기능 구현 (게시판)
- 댓글 기능
- 조회수 기능
- 게시글 삭제 기능
* 추가할 기능 구현 (인증)
- 소셜 인증
------------------------------------
오늘은 댓글 기능과 조회수 기능을 추가하였다.
추가적으로 게시판의 모양을 테이블로 조금 더 그럴싸하게 만들었다.
< 게시판 표 작성 >
게시판 모델 HTML을 가져와 사용했고, 컨텐츠는 전달받는 post에서 뽑아서 뿌려주었다.
< 게시판 모양 >
다음으로 댓글 기능을 추가하였다.
다음은 댓글 Model이다.
< Comment Model >
writer를 Profile과 연결해주었다. 또 post와도 연결해주었다.
다음은 템플릿에서 댓글 출력 코드이다.
< 댓글 출력 코드 >
Comment 모델에서 post를 외부키로 연결할 때 related_name을 comments로 정의해주어서 comments로 접근할 수 있다.
여기에 사진은 캡쳐하지 않았지만 comment.comment_writer로 닉네임을 출력할 수 있었던 이유는 내가 Profile 모델을 정의하면서 __str__ 을 overwrite해서 닉네임을 출력하게 만들었기 때문이다.
< 댓글 출력 화면 >
다음으로 댓글 쓰기 기능을 만들었다. 쓰기의 경우 기존 detail 보는 템플릿에서 폼을 추가해주고 해당 폼을 처리해줄 view를 만드는 과정으로 진행했다.
< form 생성 >
post 와도 외부키가 연결되어있기 때문에 post의 pk가 필요하다.
< comment_write view >
POST 메서드일 경우만 처리하게 만들었다. 이 경우 post를 pk로 뽑아내고 현재 로그인한 사용자의 user를 가져와 연결된 Profile을 작성자와 연결해준다. 그 후 각 내용을 Comment 로 생성해주면 된다.
< 테스트 댓글 작성 >
< 댓글 작성 확인 >
다음으로 댓글의 개수를 출력해주었다.
< 댓글 수 >
이 댓글 수를 새주는 것은 all 대신 count를 이용하면 되었다.
다음으로! 조회수 기능이다.!
나는 Detail View(CBV)를 사용하였는데, 인터넷에 보니 CBV를 사용할 경우 처리해야할 게 많아서 보통 다른 lib를 이용한다고 들었다. 그런데 내가 일단 구현해 보았다.
< 조회수 증가 함수 생성 >
@property를 이용하면 템플릿에서도 사용할 수 있다. 조회수를 1 늘리고 저장한다.
< 템플릿에 삽입 >
이렇게 되면 해당 화면이 불려질때마다 해당 post의 조회수가 1씩 증가한다.
< 조회수 증가 테스트 >
테스트해보니 문제가있었다...
해당 템플릿이 로드 될 때마다 조회수가 증가하다보니, F5를 연달아 누르면 조회수가 막 올라간다...
이 기능을 세션을 가지고 처리했던 것 같은데 자세히 다시 알아보고 처리해야겠다.
* 추가할 기능 구현 (게시판)
- 댓글 수정기능
- 조회수 조작 방지 기능
- 게시글 삭제 기능
* 추가할 기능 구현 (인증)
- 소셜 인증
'Web > Django Project' 카테고리의 다른 글
Code1018 Project (7) - 자료실 추가 및 좋아요 기능 (0) | 2018.08.15 |
---|---|
Code1018 Project (6) - 게시글, 댓글삭제 기능 (0) | 2018.08.14 |
Code1018 Project (4) - 게시판 기능 (0) | 2018.08.13 |
Code1018 Project (3) - mypage 기능 (0) | 2018.08.07 |
Code1018 Project (2) - 날짜선택 Widget 기능 (0) | 2018.08.04 |