Django 기반의 애플리케이션은 도서를 관리하고, 사용자 인증을 처리하며, 사용자가 질문, 답변, 댓글과 상호작용할 수 있는 플랫폼을 제공합니다. 본 프로젝트는 도서 관리, 사용자 프로필, 인증 기능을 포함한 여러 핵심 기능을 구현하고, 조회수 기능과 내비게이션 바 개선과 같은 커스텀 기능도 추가하였습니다.
- get_all_books: 모든 도서의 목록을 반환합니다.
- get_books_by_author: 특정 저자로 필터링된 도서를 반환합니다.
- get_books_by_title_keyword: 제목에 특정 키워드를 포함한 도서를 반환합니다.
- get_books_ordered_by_title: 도서를 제목 순으로 정렬하여 반환합니다.
- Django의
request객체를 사용하여 파일 업로드 기능을 구현하였습니다. - UploadFile 모델: 파일 제목, 파일, 업로드 시간을 저장하며, 파일은
media/uploads/폴더에 저장됩니다.
- 로그인: Django의 기본 인증 시스템을 사용하여 사용자가 로그인할 수 있습니다. 로그인 성공 시 세션이 생성됩니다.
- 로그아웃: 사용자가 로그아웃할 때 세션을 종료합니다.
- HTTP 요청은 Django 뷰에서 처리되며, API 요청의 성공 또는 실패를 나타내기 위해 적절한 HTTP 응답 코드(
201 Created,400 Bad Request)를 사용합니다. - 응답은 JSON 형식으로 반환됩니다.
- 데이터베이스와의 상호작용 및 도서 대출 처리 등 비즈니스 로직을 서비스 계층으로 분리하여 유지 보수성과 확장성을 높였습니다.
- 커스텀 예외 처리:
BookNotFound,BookHasNoBorrowHistory와 같은 특정 예외를 정의하고 처리합니다. 3
- 사용자 프로필 : 사용자의 기본 정보(아이디, 이메일, 가입일)와 사용자가 작성한 질문, 답변, 댓글 목록을 표시합니다.
- 조회수: 사용자가 질문을 조회할 때마다 조회수를 증가시키며, 동일한 질문을 반복해서 조회해도 조회수가 증가하지 않도록 구현하였습니다.
- 네비게이션 바 개선: 로그인한 사용자의 이름을 네비게이션 바에 표시하고, 프로필, 로그아웃 등 다양한 링크를 제공하는 동적 내비게이션 바를 구현하였습니다.