∟Framework/∟Django

Django - 회원기능 구현하기

최 수빈 2025. 2. 6. 16:36

 

Django 회원가입, 회원탈퇴, 정보수정, 비밀번호 변경 구현

 

 

 

회원가입 (Signup)

Django에서는 기본적으로 'auth.User'모델을 제공

'UserCreationForm'을 사용하여 회원가입 기능을 구현할 수 있음

 

UserCreationForm

username과 password로 새로운 user를 생성하는 ModelForm

username, password1, password2를 가짐

django.contrib.auth.forms

 

django/django/contrib/auth/forms.py at 944745afe2ec45aed30cef799c250107f1364ca7 · django/django

The Web framework for perfectionists with deadlines. - django/django

github.com

 

 

forms.py 생성

accounts/form.py

 

accounts/views.py 회원가입 로직 구현

accounts/views.py
accounts/views.py - 가입 후 즉시 로그인ver.

 

url 연결

accounts/urls.py

 

회원가입 태그 생성

templates/base.html
회원가입 태그
accounts/signup



 

회원탈퇴 (Delete Account)

 

DB에서 User를 지워주는 작업

'request.user.delete()'를 호출하여 사용자 계정을 삭제하는 방식으로 구현

 

 

 

url 연결

accounts/urls.py

 

views.py 회원탈퇴(DB에서 delete)로직 구현

accounts/views.py

 

*탈퇴 후 세션 삭제 순서 중요

 

 

회원탈퇴 버튼 추가

templates/base.html
회원탈퇴 버튼 생성
DB의 유저: admin, user1
회원탈퇴 후 redirect된 화면
DB의 유저 : admin



 

정보 수정

 

Django에서 기본 User Model에 대한 기본적인 수정 ModelForm제공 → UserChangeForm

커스텀 'UserChangeForm'을 만들어 불필요한 필드를 제외하는 것이 좋음

 

 

 

url 연결

accounts/urls.py

 

views.py 정보 수정 rendering test

accounts/views.py

 

회원정보수정 template 생성

accounts/templates/accounts/update.html

 

회원정보수정 태그 생성

templates/base.html
사용자에게 불필요한 필드가 포함돼있음

 

 

UserChangeForm

UserChangeForm

 

class Meta를 보면 'model = User'확인 가능

 

User Model

UserModel

 

AbstractUser

AbstractUser

 

foms.py에서 UserChangeForm 작성

accounts/forms.py

 

views.py 회원정보 수정 로직 재구현

accounts/viewspy
커스텀 회원정보수정페이지



 

비밀번호변경(Change Password)

'PasswordChangeForm'을 사용하여 구현할 수 있음

비밀번호 변경 후 'update_session_auth_hash()'를 호출하여 세션을 유지, 로그인 상태를 유지할 수 있음

 

 

url연결

accounts/urls.py

 

views.py - change_password 로직 구현

change_password

비밀번호 변경 후 세션을 유지하여 로그인 상태를 유지 코드

change_password - update_session_auth_hash ver.

 

session invalidation on password change

 

 

change_password.html 템플릿 생성

accounts/templates/accounts/change_passworld.html
오버라이딩하여 수정된 change_password 경로, change_password화면

 

 


 

Django의 기본 인증 시스템을 활용하여 회원가입, 회원탈퇴, 정보수정, 비밀번호 변경 기능(회원 관리 기능)을 구현할 수 있음

  • 회원가입 : UserCreationForm
  • 회원탈퇴 : request.user.delete() + auth_logout()
  • 회원정보 수정 : CustomUserChangeForm으로 필요한 필드만 사용 가능
  • 비밀번호 변경 : PasswordChangeForm, 'update_session_auth_hash()'로 세션 유지