바뀜

443 바이트 추가됨 ,  2022년 12월 15일 (목) 13:38
편집 요약 없음
43번째 줄: 43번째 줄:  
* 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델.
 
* 필수적으로 2개의 모델을 작성해주어야 한다. BaseUserManager를 상속받은 모델과 AbstractBaseUser를 상속받은 모델.
 
* 사람마다 짜는 방식이 달라서, 그리고 일일이 주석을 달아두지 않기 때문에 처음 하는 사람들은 해석하는 데 적잖이 애먹는다.  
 
* 사람마다 짜는 방식이 달라서, 그리고 일일이 주석을 달아두지 않기 때문에 처음 하는 사람들은 해석하는 데 적잖이 애먹는다.  
* 아래에선 계정 식별자를 identifier로 설정했는데, 장고에서 기본적으로 사용하는 username 필드를 사용하는 편이 좋다.  
+
* 아래에선 계정 식별자를 identifier로 설정했는데, 장고에서 기본적으로 사용하는 username 필드를 사용하는 편이 좋다.(권한 관련 확장기능에서 username을 그대로 사용하는 경우가 많아, 계정 식별자는 username을 사용하는 편이 좋다.)
    
{| class="wikitable"
 
{| class="wikitable"
170번째 줄: 170번째 줄:     
===DB에 반영===
 
===DB에 반영===
이 작업을 처음에 하는 게 아니라, 개발 중에 하는 경우, 다른 앱의 모델에서 유저를 참조하고 있을 때 참조테이블로 User가 들어가 있는데, 이 때문에 'auth.User', which has been swapped out. 라는 에러가 뜬다.
+
이 작업을 처음에 하는 게 아니라, 개발 중에 하는 경우, 다른 앱의 모델에서 유저를 참조하고 있을 때 참조 테이블로 User가 들어가 있는데, 이 때문에 'auth.User', which has been swapped out. 라는 에러가 뜬다.
    
이것과 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 내에 추가한다.
AUTH_USER_MODEL = 'custum_account.User'  # 관리유저로 사용할 모델을 설정한다.
+
 
 +
보통은 앱이름은 custom_account, 모델 이름은 User 따위가 된다.<syntaxhighlight lang="python">
 +
AUTH_USER_MODEL = 'custom_account.User'  # 관리유저로 사용할 모델을 설정한다.
 
</syntaxhighlight>
 
</syntaxhighlight>
    
=== 중간 확인 ===
 
=== 중간 확인 ===
   −
* python manage.py createsuperuser로 관리계정 생성.
+
* python manage.py createsuperuser로 관리 계정 생성.
 
* 사이트를 실행시킨 후 /admin에 들어가 로그인해본다.
 
* 사이트를 실행시킨 후 /admin에 들어가 로그인해본다.
   196번째 줄: 200번째 줄:  
     list_display = ('identifier',)
 
     list_display = ('identifier',)
 
     exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
 
     exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
</syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다.
+
</syntaxhighlight>그럼 이제 이 모델로 계정 관리가 가능해진다.
    
==폼 작성==
 
==폼 작성==