본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] Django에서 계정 일시정지 구현

 

Django에서 계정 일시정지 기능을 구현했다. 주된 목표는 사용자가 특정 조건(예: 신고 누적)에 따라 일시적으로 정지될 수 있도록 하면서, 기존에 사용하고 있던 is_active(회원 탈퇴 시 사용)와의 충돌을 방지하는 것이다.

주요 개념:

  • is_suspended: 사용자의 일시정지 상태를 추적하기 위한 Boolean 필드로, is_active와는 별개로 처리
  • suspended_at: 사용자가 정지된 시간을 기록하기 위한 DateTimeField. 이 필드는 시간 기반으로 정지된 계정을 관리하는 데 필수

구현 단계:

  1. 모델 수정: CustomUser 모델에 두 가지 필드를 추가
    • is_suspended: 계정이 정지 상태인지 확인하는 필드.
    • suspended_at: 계정이 정지된 시간을 기록하는 필드.
  2. 관리 명령어: Django의 관리 명령어를 사용해, 특정 기간(예: 30일) 이상 정지된 사용자를 자동으로 정지 해제하는 기능을 구현

배운 점:

  • 책임 분리: 계정 탈퇴를 나타내는 is_active와 일시적인 정지를 나타내는 is_suspended를 분리함으로써 더 깨끗하고 유지보수하기 쉬운 로직을 구현
  • 시간대 처리: 시간 관련 필드를 다룰 때는 항상 timezone.now()를 사용해 Django의 시간대 지원과 일치시키는 것이 중요하다는 점