Django Shell을 사용하여 Django Admin 비밀번호 재설정하는 방법
Source: Dev.to
Django 관리자 계정의 비밀번호를 잊어버리면 답답할 수 있지만, Django 셸을 사용하면 빠르고 간단하게 재설정할 수 있습니다. 이 방법은 관리자 인터페이스에 더 이상 접근할 수 없을 때도 작동하며 추가 패키지가 필요하지 않습니다.
단계별 가이드
Django 셸 열기
manage.py 파일이 있는 프로젝트 디렉터리에서 다음을 실행합니다:
python manage.py shell
이 명령은 Django 프로젝트가 로드된 대화형 Python 셸을 시작합니다.
비밀번호 재설정
셸 안에서 다음을 실행합니다:
from django.contrib.auth.models import User
# 'admin'을 실제 관리자 계정의 사용자 이름으로 교체하세요
user = User.objects.get(username='admin')
# 새 비밀번호를 설정합니다 ('new_secure_password'를 원하는 비밀번호로 교체)
user.set_password('new_secure_password')
# 변경 사항 저장
user.save()
중요 참고 사항
- 올바른 사용자 이름을 사용하세요(보통
admin이지만, 커스텀 슈퍼유저를 만든 경우 다를 수 있습니다). set_password()는 비밀번호를 자동으로 해시해 주므로user.password = 'plain_text'와 같이 평문 비밀번호를 직접 할당하지 마세요. 이는 비밀번호가 해시되지 않은 상태로 저장됩니다.
셸 종료
비밀번호를 업데이트한 후 다음을 입력합니다:
exit()
또는 Ctrl+D(Unix 계열) 혹은 Ctrl+Z 후 Enter(Windows)를 누릅니다.
이제 새 비밀번호와 사용자 이름을 사용해 Django 관리자 인터페이스(/admin/)에 로그인할 수 있습니다.
보너스: 관리자뿐 아니라 모든 사용자 비밀번호 재설정
같은 방법을 데이터베이스에 있는 어떤 사용자에게도 적용할 수 있습니다—사용자 이름만 바꾸면 됩니다:
user = User.objects.get(username='john_doe')
user.set_password('another_secure_password')
user.save()
문제 해결 팁
“User matching query does not exist”
사용자 이름을 다시 확인하세요(대소문자를 구분합니다). 모든 사용자를 나열하려면 다음을 실행합니다:
User.objects.all()
커스텀 User 모델 사용
프로젝트에서 커스텀 사용자 모델(예: CustomUser)을 사용하는 경우 User 대신 해당 모델을 사용합니다:
from myapp.models import CustomUser
user = CustomUser.objects.get(username='admin')
결론
몇 줄의 코드만으로도 몇 초 만에 Django 관리자 계정에 다시 접근할 수 있습니다. 이 기술은 프로덕션 서버에서나 이메일 기반 비밀번호 재설정이 설정되지 않은 경우에 특히 유용합니다.