바뀜

둘러보기로 가기 검색하러 가기
376 바이트 추가됨 ,  2021년 11월 2일 (화) 11:32
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>그럼 이제 이 모델로 계정관리가 가능해진다.
   
==모델==
 
==모델==
 
커스텀유저를 외래키로 사용하고 싶다면
 
커스텀유저를 외래키로 사용하고 싶다면

둘러보기 메뉴