자유롭게 정하는 사이트 구조
단순히 블로그가 필요하다면 네이버 블로그나 티스토리, 워드프레스를 이용하면 되고, 커뮤니티 사이트를 원한다면 그누보드라는 간단 툴이 존재한다.
이런 것들을 사용한다면 원터치로 간편하게 완성물을 이용할 수 있지만, 이런 것들을 사용하지 않고 django로 만들어보려는 이유는 단순한 욕심이다.
사이트 구조를 처음부터 직접 만들어보고 싶다는 욕심.
장점으로는 온갖 해괴한 기능을 만들어볼 수 있다는 것이고, 단점으로는 정말 기초 수준의 기능일지라도 내 손으로 직접 구현해야한다는 것이다.
거기에 더해 동작오류에 대한 버그 수정은 덤이다.
지금 운영 중인 블로그도 django로 직접 만들긴 했으나, 여러 가지로 부족한 부분들이 남아있다.
경우에 따라서는 기존 구조를 뒤엎어야할 지도 모른다.
CRUD
기초적인 기능 분류는 Create, Read, Update, Delete로 분류된다.
콘텐츠가 있어야 읽는 것이 가능하니 만드는 기능이 우선이고, 그 다음은 읽는 기능, 그 다음은 수정하는 기능, 그리고 삭제하는 기능이 필요하다.
필요한 기능
사용자 계정
글을 작성하고 관리하는 기본 주체를 확인해야 하므도 필요하다
아이디, 비밀번호, 닉네임, 프로필, 자기소개, 계정 권한 등의 속성이 필요하다.
게시글
콘텐츠는 보통 게시글이다.
게시글이 아니라 어떤 유형의 정보가 될 수도 있지만, 커뮤니티 사이트를 기준으로 하므로 게시글을 사용한다.
제목, 내용, 작성시간, 수정시간, 작성자, 카테고리, 태그, 추천/비추천 등의 속성이 필요하다.
경우에 따라서는 게시글 수정 전 내용을 보관하는 것도 필요하다.
댓글
게시글이 있다면 댓글 기능이 필요하다.
상호간 소통을 위해 새로운 글을 쓰게 하는 것은 소통에 방해가 되기 때문이다.
내용, 작성시간, 수정시간, 작성자, 추천/비추천 등의 속성이 필요하다.
신고
불특정 다수의 인원이 이용한다면 누군가의 관리를 필요로 한다.
모든 게시물을 확인하는 것은 불가능하기 때문에 신고를 할 수 있는 공간 또는 기능이 필요하다.
제목, 내용, 신고 대상 게시물, 신고자 등의 속성이 필요하다.
페이지뷰
조회수 측정이 필요하다.
단순 조회수 측정 뿐만 아니라 어떤 사람이 어떤 페이지에 접근했는지 기록해둘 필요가 있다.
관리자 권한 탈취 시도는 의외로 빈번하기 때문이다.
조회 페이지, ip, 접근시간 등의 속성이 필요하다.