Skip to content

기본 기능 개발: 사용자 인증, 댓글, 파일 업로드 및 관리자 페이지 커스터마이징 구현#12

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/add-user-authentication-features
Draft

기본 기능 개발: 사용자 인증, 댓글, 파일 업로드 및 관리자 페이지 커스터마이징 구현#12
Copilot wants to merge 2 commits intomainfrom
copilot/add-user-authentication-features

Conversation

Copy link
Contributor

Copilot AI commented Oct 17, 2025

개요

Django 프로젝트의 핵심 기능들을 구현했습니다. 사용자 인증 시스템, 댓글 기능, 파일 업로드 기능을 추가하고, 관리자 페이지를 커스터마이징했습니다.

구현된 기능

1. 사용자 인증 (User Authentication)

완전한 사용자 인증 시스템을 구현했습니다:

  • 회원가입: SignUpForm을 사용한 사용자 등록 기능 (/signup/)
  • 로그인: Django 내장 인증 시스템을 활용한 로그인 기능 (/login/)
  • 로그아웃: 세션 종료 및 홈으로 리다이렉트 (/logout/)
  • 동적 네비게이션: 로그인 상태에 따라 다른 메뉴 표시 (로그인/회원가입 vs 사용자명/로그아웃)
  • 메시지 알림: Bootstrap 알림을 사용한 사용자 피드백

2. 댓글 기능 (Comments)

게시글에 댓글을 작성할 수 있는 완전한 기능을 구현했습니다:

  • Comment 모델: Post와 1:N 관계, 작성자, 내용, 생성/수정 날짜 포함
  • 댓글 작성: 로그인한 사용자만 댓글 작성 가능
  • 댓글 삭제: 작성자만 자신의 댓글 삭제 가능
  • 실시간 표시: 게시글 상세 페이지에 댓글 목록과 개수 표시
  • REST API: /api/comments/ 엔드포인트로 프로그래밍 방식 접근 지원

3. 파일 업로드 (File Upload)

게시글에 파일을 첨부할 수 있는 기능을 구현했습니다:

  • FileUpload 모델: Post와 연결된 파일 저장 모델
  • 파일 업로드: 로그인한 사용자가 게시글에 파일 첨부 가능
  • 파일 다운로드: 업로드된 파일에 대한 다운로드 링크 제공
  • 미디어 처리: media/uploads/ 디렉토리에 파일 저장 및 서빙
  • REST API: /api/files/ 엔드포인트 제공

4. 관리자 페이지 커스터마이징

모든 모델에 대한 관리자 인터페이스를 대폭 개선했습니다:

PostAdmin:

  • 목록 표시: ID, 제목, 작성자, 생성일, 수정일
  • 필터: 생성일, 수정일, 작성자별 필터링
  • 검색: 제목, 내용, 작성자 사용자명으로 검색
  • 날짜 계층 구조 탐색 지원

CommentAdmin:

  • 목록 표시: ID, 게시글, 작성자, 내용 미리보기, 생성일, 수정일
  • 내용 미리보기 메서드: 50자 제한으로 긴 댓글 요약 표시
  • 필터: 생성일, 수정일, 작성자별 필터링
  • 검색: 내용, 작성자, 게시글 제목으로 검색

FileUploadAdmin:

  • 목록 표시: ID, 파일명, 게시글, 업로더, 생성일
  • 필터: 생성일, 업로더별 필터링
  • 검색: 파일명, 업로더, 게시글 제목으로 검색
  • Fieldsets으로 구조화된 상세 페이지

UserProfileAdmin:

  • 향상된 검색 기능 (사용자명, bio)

기술 상세

모델 변경

# Comment 모델
class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

# FileUpload 모델
class FileUpload(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='files', null=True, blank=True)
    uploader = models.ForeignKey(User, on_delete=models.CASCADE)
    file = models.FileField(upload_to='uploads/')
    filename = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)

API 엔드포인트

  • GET/POST /api/posts/ - 게시글 목록 조회/생성
  • GET/PUT/DELETE /api/posts/{id}/ - 게시글 상세/수정/삭제
  • GET/POST /api/comments/ - 댓글 목록 조회/생성
  • GET/PUT/DELETE /api/comments/{id}/ - 댓글 상세/수정/삭제
  • GET/POST /api/files/ - 파일 목록 조회/업로드
  • GET/DELETE /api/files/{id}/ - 파일 상세/삭제

테스트 커버리지

11개의 포괄적인 테스트 케이스를 작성하여 모든 기능을 검증했습니다:

  • 모델 테스트 (Post, Comment, FileUpload)
  • API 테스트 (Post CRUD, Comment CRUD)
  • 인증 테스트 (회원가입, 로그인, 로그아웃)

테스트 결과: ✅ 11/11 통과 (100% 성공률)

스크린샷

홈페이지

Homepage

회원가입 페이지

Signup Page

로그인 후 홈페이지

After Signup

게시글 상세 페이지 (댓글 및 파일 업로드 기능)

Post Detail

댓글이 작성된 모습

Post with Comment

변경된 파일

  • core/models.py: Comment, FileUpload 모델 추가
  • core/views.py: 인증, 댓글, 파일 업로드 뷰 추가 및 ViewSet 확장
  • core/admin.py: 모든 모델에 대한 커스터마이징된 관리자 클래스
  • core/urls.py: 새로운 URL 패턴 추가
  • core/forms.py: SignUpForm 생성
  • core/serializers.py: CommentSerializer, FileUploadSerializer 추가
  • core/tests.py: 11개의 테스트 케이스 추가
  • core/templates/core/signup.html: 회원가입 템플릿 생성
  • core/templates/core/login.html: 로그인 템플릿 생성
  • core/templates/core/post_detail.html: 댓글 및 파일 업로드 UI 추가
  • core/templates/base.html: 동적 네비게이션 및 메시지 알림 추가
  • config/settings.py: LOGIN_REDIRECT_URL, LOGIN_URL 설정 추가
  • config/urls.py: 미디어 파일 서빙 설정 추가

실행 방법

# 마이그레이션 적용
python manage.py migrate

# 개발 서버 실행
python manage.py runserver

# 테스트 실행
python manage.py test core

Closes #[이슈번호]

Original prompt

This section details on the original issue you should resolve

<issue_title>기본 기능 개발</issue_title>
<issue_description>- 사용자 인증(회원가입, 로그인, 로그아웃)

  • 주요 도메인 기능(예: 게시판, 댓글, 파일 업로드 등)
  • 관리자(admin) 페이지 커스터마이징</issue_description>

Comments on the Issue (you are @copilot in this section)

Fixes #5


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

…mization

Co-authored-by: kriey1 <96155832+kriey1@users.noreply.github.com>
Copilot AI changed the title [WIP] Add user authentication and main domain features 기본 기능 개발: 사용자 인증, 댓글, 파일 업로드 및 관리자 페이지 커스터마이징 구현 Oct 17, 2025
Copilot AI requested a review from Donggri97 October 17, 2025 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

기본 기능 개발

2 participants