You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
가입된 이후 프로필을 관리할 수 있는 기능을 통해 본인의 개발 분야와 프로필 이미지를 관리할 수 있습니다.
7-2. 블로그 기능
로그인된 유저를 대상으로 글 작성, 목록, 상세보기, 삭제 기능을 제공합니다.
로그인되지 않은 유저는 글 목록 및 글 상세보기 기능만 제공받습니다.
7-3. 댓글&대댓글 기능
로그인된 유저를 대상으로 블로그 글 혹은 게시판 글에 댓글을 작성, 수정, 삭제할 수 있는 기능을 제공합니다.
8. 추가 기능
8-1. 구독 기능
마음에 드는 글을 작성한 유저를 구독하는 기능으로 다른 유저의 블로그에 들어가 구독을 할 수 있습니다. 해당 기능은 ajax를 이용한 비동기 처리를 통해 구현하여 화면의 이동없이 기능을 사용할 수 있습니다.
구독한 계정들은 subscribe 페이지를 통해서 관리할 수도 있습니다.
8-2. 게시판 기능
기본적으로 제공되는 기능은 블로그 기능들과 동일하게 글 작성, 수정, 삭제 기능을 제공하지만, 다른 유저가 작성한 글들과 함께 자신의 글이 목록에서 같이 보인다는 차이가 있습니다.
9. 개발 이슈
9-1. 회원가입 암호화가 안되는 문제
9-1-1. 문제 상황
회원가입을 커스텀하면서 admin 페이지에서는 회원가입 시 비밀번호 암호화가 진행되는 것에 반해 커스텀한 회원가입은 비밀번호를 암호화하지 않고 DB에 저장하는 현상이 발생했고, 이에 따른 사이드 이펙트로 커스텀 회원가입을 통해 가입된 계정은 로그인되지 않는 현상이 발생했습니다.
9-1-2. 해결 방법
Django가 제공하는 비밀번호 암호화를 적용하기 위해서는 아래와 같이 set_password 함수를 이용해야 한다는 것을 확인하였습니다. 해당 방법을 적용한 이후 DB 확인 결과 암호화가 적용되어 있는 것을 확인하였고, 로그인 기능도 정상 동작하는 것을 확인하였습니다.
user=User()
user.set_password(password)
9-2. 다대다 관계에서 삭제 시 상대 테이블 데이터가 삭제되는 문제
9-2-1. 문제 상황
구현하고 있는 기능 중 구독 기능은 유저와 유저 모델 간의 다대다 관계로 구현 중에 있습니다. 구독을 취소하게 되면 구독 중인 유저들 중 자신의 구독 목록에서 대상 유저를 삭제해야 하는데 단순히 다대다 관계가 삭제되는 것이 아닌 삭제 대상 유저가 유저 테이블에서도 삭제되는 상황이였습니다.
9-2-2. 해결 방법
기존에 사용하였던 delete 함수를 사용하는 것이 아닌 remove 함수를 사용하여 대상 유저 데이터를 다대다 관계에서 삭제하는 방법으로 해결할 수 있었습니다.
9-3. 첨부된 파일이 POST 요청으로 넘어오지 않는 문제
9-3-1. 문제 상황
type이 file로 지정된 input 태그에 첨부된 파일이 POST 요청으로 넘어올 때 대상 값이 넘어오지 않는 상황이였습니다.
9-3-2. 해결 방법
대상 값을 받기 위해서 아래처럼 코드를 작성했습니다.
request.POST.get['upload_file']
문제의 원인은 파일을 받기 위해서는 POST를 쓰는게 아닌 FILE을 써서 받아야 한다는 점이였습니다. 원인을 확인한 후 아래와 같이 수정하여 문제를 해결할 수 있었습니다.
request.FILE.get['upload_file']
10. 개발하며 느낀점
처음 프로젝트의 목표를 정하고 Tech Blog라면 그 자체로 개발할 컨텐츠가 많다라는 생각이 들었습니다. 때문에 기획 단계에서 개발하고 싶고 좋은 컨테츠라고 생각하는 기능들을 전부 기획하게 되었습니다. 이렇게 프로젝트를 진행하던 중에 마감 기한이 다가오면서 개발해야 할 기능들이 너무 많아 개발에 아쉬운 부분들이 계속해서 생기게 되었습니다. 이러한 경험을 하게 되면서 개발자로서 마감 기한이 정해진 프로젝트를 대상으로 '개발하고 싶은 것', '좋은 컨텐츠라고 생각하는 것'보다 마감 기한 안에 개발할 수 있는 정도를 확실하게 파악하여 그것을 기반으로 기획을 하는 것이 프로젝트에 좋은 기획이 될 수 있음을 알게 되었습니다.
이전에는 더 좋은 기술을 가지고 있는 것, 자신만의 획기적인 코드를 알고있는 것들이 개발에 있어서 중요하다고 생각했습니다. 하지만 이번 프로젝트를 진행하면서 생각을 바꾸게 되었습니다. 그것들보다 더 중요한 것은 기초적인 것들을 얼마나 잘 숙지하고 있는가라는 것입니다. 아무래도 한번 개발한 이후에 스스로 개발한 코드들에 코드로서 갖추어야 할 기본적인 기능들이 제대로 구현되어 있지 않다면 계속해서 지난 코드들을 복기해야 하고, 이는 곳 개발 비용이 늘어남을 의미하기 때문입니다. 물론 좋은 기술과 자신만의 코드도 개발에 있어 중요한 일부가 되겠지만, 기본적인 것이 기반되어 있지 않다면 좋은 기술, 자신만의 코드는 장점이 될 수 없기 때문입니다. 이러한 경험들을 통해 저는 기본이 탄탄한 개발자가 되어야 한다라는 생각을 갖게 되었습니다.