바뀜

442 바이트 추가됨 ,  2022년 12월 15일 (목) 13:38
편집 요약 없음
43번째 줄: 43번째 줄:  
* 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델.
 
* 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델.
 
* 사람마다 짜는 방식이 달라서, 그리고 일일이 주석을 달아두지 않기 때문에 처음 하는 사람들은 해석하는 데 적잖이 애먹는다.  
 
* 사람마다 짜는 방식이 달라서, 그리고 일일이 주석을 달아두지 않기 때문에 처음 하는 사람들은 해석하는 데 적잖이 애먹는다.  
* 아래에선 계정 식별자를 identifier로 설정했는데, 장고에서 기본적으로 사용하는 username 필드를 사용하는 편이 좋다.  
+
* 아래에선 계정 식별자를 identifier로 설정했는데, 장고에서 기본적으로 사용하는 username 필드를 사용하는 편이 좋다.(권한 관련 확장기능에서 username을 그대로 사용하는 경우가 많아, 계정 식별자는 username을 사용하는 편이 좋다.)
    
{| class="wikitable"
 
{| class="wikitable"
174번째 줄: 174번째 줄:  
이것과 from django.contrib.auth.models import User를 지우고, from django.conf import settings 후에
 
이것과 from django.contrib.auth.models import User를 지우고, from django.conf import settings 후에
   −
User 대신 settings.AUTH_USER_MODEL를 넣어주면 된다.
+
User 대신 <code>settings.AUTH_USER_MODEL</code>를 넣어주면 된다.
 +
 
 +
위 <code>settings.AUTH_USER_MODEL</code>은 텍스트만 반환하기 때문에, 유저 객체 자체를 불러오고 싶다면 <code>from django.contrib.auth import get_user_model</code> 을 사용하면 된다.
 
===settings.py에 만들 모델 추가===
 
===settings.py에 만들 모델 추가===
 
아래 작업은 DB 반영이 끝나 후에 진행해야 한다. 그렇지 않으면 <code>ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'account.user', but app 'account' isn't installed.</code> 따위의 에러가 발생한다.
 
아래 작업은 DB 반영이 끝나 후에 진행해야 한다. 그렇지 않으면 <code>ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'account.user', but app 'account' isn't installed.</code> 따위의 에러가 발생한다.
   −
보통은 앱이름은 account, 모델이름은 User 따위가 된다.<syntaxhighlight lang="python">
+
다음과 같은 줄을 settings.py 내에 추가한다.
 +
 
 +
보통은 앱이름은 custom_account, 모델 이름은 User 따위가 된다.<syntaxhighlight lang="python">
 
AUTH_USER_MODEL = 'custom_account.User'  # 관리유저로 사용할 모델을 설정한다.
 
AUTH_USER_MODEL = 'custom_account.User'  # 관리유저로 사용할 모델을 설정한다.
 
</syntaxhighlight>
 
</syntaxhighlight>
184번째 줄: 188번째 줄:  
=== 중간 확인 ===
 
=== 중간 확인 ===
   −
* python manage.py createsuperuser로 관리계정 생성.
+
* python manage.py createsuperuser로 관리 계정 생성.
 
* 사이트를 실행시킨 후 /admin에 들어가 로그인해본다.
 
* 사이트를 실행시킨 후 /admin에 들어가 로그인해본다.
   196번째 줄: 200번째 줄:  
     list_display = ('identifier',)
 
     list_display = ('identifier',)
 
     exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
 
     exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
</syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다.
+
</syntaxhighlight>그럼 이제 이 모델로 계정 관리가 가능해진다.
    
==폼 작성==
 
==폼 작성==