티스토리 뷰

반응형

django 에서 사용하는 user account 아닌 사용자가 유저모델을 정의해서 사용할 수 있다. 

 

자세한 내용에 대해서는 django 공식 문서에서 확인할 수 있다. 

https://docs.djangoproject.com/en/3.0/topics/auth/customizing/

 

Customizing authentication in Django | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

reference src : 

https://github.com/mitchtabian/CodingWithMitch-Blog-Course/tree/Creating-a-Custom-User-Model-(Django)/src/account

 

mitchtabian/CodingWithMitch-Blog-Course

Web development with Django (Python) for Beginners - mitchtabian/CodingWithMitch-Blog-Course

github.com

사용자 계정을 관리할 app(account)을 하나 추가해서 다음과 같이 Account 모델을 생성해준다. 

 

USERNAME_FIELD : 유저가 로그인시에 사용할 필드

REQUIRED_FILEDS : 신규 계정 생성시에 필수 항목

 

그리고, 

objects = MyAccountManager() 을 지정해 주어야 하는데, 이는 Account 관리를 위한 메쏘드를 포함하고 있어야 하기 때문이다. 사용사 계정을 생성하기 위해서는 create_user / create_superuser 등의 메쏘드가 지원되어야 하는데, 이를 Manager 클래스에서 정의되기 때문이다. 

 

 

 

다음은 사용자 계정을 관리하는 모델을 만들어준다. 

일반 사용자 계정 : create_user()

슈퍼 사용자 계정 : create_superuser()

project settings.py 에서 사용자 모델을 지정해 준다.

 

 

admin panel 에 Account 를 추가한다. 

 

admin 화면에서 Account 계정을 보면 위와 같이 변경된 것을 볼수 있다. 한가지 문제점은 password 이다. 패스워드가 암호화 되어 저장되어 있지만 변경시에 암호화된 문자를 입력할수 없다는 것이다. 


admin 패널에서 패스워드 관리를 위한 방법 

 

이렇게 하면 패스워드는 "this form" 을 통해서만 변경가능해진다. 


Signup : registrationform 만들기 

 

기본적으로 UserCreationForm 을 사용해서 signup form 을 만들지만,  새로운 모델을 이용할 경우 form 또한 별도로 지정해 주어야 한다. 

 

signup views 

 


Password change..

 

패스워드 변경은 url /accounts/password_change/ 을 통해서 진행되면 password_change_form.html 템플릿이 존재하지 않으면 admin 에서 제공하는 페이지로 이동된다. 따라서 registeration/password_change_form.html 을 만들어준다. 

 

템플릿 파일을 생성해지만 계속 admin 페이지로 이동되는 경우, settings.py 에 templates 경로를 등록주면 된다. 

그리고 패스워드가 성공되면, password_change_done.html 으로 이동하게 된다. 

 

 


Password Reset 

 

settings.py 

 

메일관련 테스트를 위해서 실제 메일을 사용하지 않고 콘솔을 EMAIL 대신 사용하게 해주는 설정이다. 

sendtestemail in console 

 

 

다음은 password reset link 추가 

 

login 화면에 Reset password 링크를 추가한다. 

password reset template

 

패스워드 리셋 요청시 다음 템플릿(password_reset_form.html)을 찾게 되는게, 별도의 설정이 없는 경우 admin 에서 사용하는 페이지를 호출한다. 사용자 화면을 만들기 위해서는 registration/password_reset_form.html 을 만들어주면된다. 

 

 

email 을 입력하고 버튼을 클릭하면 해당 주소로 password reset 할수 있는 링크를 보내준다. 

이번에는 이부분을 원하는 페이지로 호출할수 있는데, password_reset_done.html 템플릿을 만들어주면 된다. 그러면 메일을 보내고 해당 페이지를 호출하게 된다. 

 

password reset done 

 

 

password reset email 설정 

 

password reset 요청시 사용자에게 보내는 메일의 내용도 변경할수 있는데, registeration/password_reset_email.html 에 보내는 메일의 형식을 작성해주면된다. 

 

password reset confirmation 템플릿 

 

reset 메일의 링크를 호출하게 되면 password_reset_confirm.html 템플릿을 요청한다. 

 

새로운 패스워드 설정이 끝나면, 마지막으로 password_reset_complete.html 을 호출하게 된다. 

 

 

끝.. 

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함