| 32번째 줄: |
32번째 줄: |
| | ==사전작업== | | ==사전작업== |
| | 어떤 앱의 어떤 모델을 기본 유저로 사용할지 생각하고 진행한다. | | 어떤 앱의 어떤 모델을 기본 유저로 사용할지 생각하고 진행한다. |
| − |
| |
| − | ===settings.py에 만들 모델 추가===
| |
| − | 보통은 앱이름은 account, 모델이름은 User 따위가 된다.<syntaxhighlight lang="python">
| |
| − | AUTH_USER_MODEL = 'account.User' # 관리유저로 사용할 모델을 설정한다.
| |
| − |
| |
| − | </syntaxhighlight>
| |
| | ==모델 작성== | | ==모델 작성== |
| | 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델. | | 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델. |
| 108번째 줄: |
102번째 줄: |
| | |그냥 모든 권한. | | |그냥 모든 권한. |
| | |} | | |} |
| | + | last_login 필드는 자동으로 생성된다. |
| | |<syntaxhighlight lang="python"> | | |<syntaxhighlight lang="python"> |
| | class User(AbstractBaseUser): | | class User(AbstractBaseUser): |
| 147번째 줄: |
142번째 줄: |
| | | | |
| | User 대신 settings.AUTH_USER_MODEL를 넣어주면 된다. | | User 대신 settings.AUTH_USER_MODEL를 넣어주면 된다. |
| | + | ===settings.py에 만들 모델 추가=== |
| | + | 아래 작업은 DB 반영이 끝나 후에 진행해야 한다. 그렇지 않으면 ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'account.user', but app 'account' isn't installed. 따위의 에러가 발생한다. |
| | + | |
| | + | 보통은 앱이름은 account, 모델이름은 User 따위가 된다.<syntaxhighlight lang="python"> |
| | + | AUTH_USER_MODEL = 'account.User' # 관리유저로 사용할 모델을 설정한다. |
| | + | |
| | + | </syntaxhighlight> |
| | + | |
| | + | === 중간 확인 === |
| | + | |
| | + | * python manage.py createsuperuser로 관리계정 생성. |
| | + | * 사이트를 실행시킨 후 /admin에 들어가 로그인해본다. |
| | + | |
| | + | ==관리자 화면에 등록== |
| | + | admin.py를 작성한다.<syntaxhighlight lang="python"> |
| | + | from django.contrib import admin |
| | + | from .models import User # 직접 등록한 모델 |
| | + | |
| | + | @admin.register(User) |
| | + | class UserAdmin(admin.ModelAdmin): |
| | + | list_display = ('identifier',) |
| | + | exclude = ('password',) # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음 |
| | + | </syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다. |
| | + | |
| | ==폼 작성== | | ==폼 작성== |
| | 모델 작성은 끝났는데, 해당 정보를 기입하기 위한 폼이 필요하다. 기본 폼은 password 따위를 암호화하지 않고 그대로 저장하기 때문이다. 폼을 밑바닥부터 만들려면 알아야 할 것도 많은데, 직접 만들기보단, UserCreationForm을 이용해 폼을 다뤄보자. | | 모델 작성은 끝났는데, 해당 정보를 기입하기 위한 폼이 필요하다. 기본 폼은 password 따위를 암호화하지 않고 그대로 저장하기 때문이다. 폼을 밑바닥부터 만들려면 알아야 할 것도 많은데, 직접 만들기보단, UserCreationForm을 이용해 폼을 다뤄보자. |
| 170번째 줄: |
189번째 줄: |
| | 비밀번호 조건은 settings.py의 AUTH_PASSWORD_VALIDATORS 안에 있는 조건들을 거쳐야 한다. | | 비밀번호 조건은 settings.py의 AUTH_PASSWORD_VALIDATORS 안에 있는 조건들을 거쳐야 한다. |
| | | | |
| − |
| |
| − | ==관리자 화면에 등록==
| |
| − | admin.py를 작성한다.<syntaxhighlight lang="python">
| |
| − | from django.contrib import admin
| |
| − | from .models import User # 직접 등록한 모델
| |
| − | #from django.contrib.auth import get_user_model은 안되나?? 확인해보자.
| |
| | | | |
| | | | |
| − | @admin.register(User)
| |
| − | class UserAdmin(admin.ModelAdmin):
| |
| − | list_display = ('identifier')
| |
| − | exclude = ('password',) # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
| |
| − | </syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다.
| |
| | ==모델== | | ==모델== |
| | 커스텀유저를 외래키로 사용하고 싶다면 | | 커스텀유저를 외래키로 사용하고 싶다면 |