바뀜

479 바이트 제거됨 ,  2021년 11월 2일 (화) 15:30
8번째 줄: 8번째 줄:  
class Profile(models.Model):
 
class Profile(models.Model):
 
     user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
 
     user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
</syntaxhighlight>일반적인 프로필 모델이라면 위 과정만으로도 구현이 끝난다.
+
</syntaxhighlight>
 +
 
 +
= 더 나아가기 =
 +
일반적인 프로필 모델이라면 위 과정만으로도 구현이 끝난다.  
    
다만, 이번엔 여러 계정을 하나의 프로필에 엮어줄 예정이라, AbstractBaseUser를 이용하여 다음과 같은 방식으로 짜주자. 다음 문서를 참고하자. <syntaxhighlight lang="python">
 
다만, 이번엔 여러 계정을 하나의 프로필에 엮어줄 예정이라, AbstractBaseUser를 이용하여 다음과 같은 방식으로 짜주자. 다음 문서를 참고하자. <syntaxhighlight lang="python">
class User(AbstractBaseUser): # 사용자들..!!
+
class User(AbstractBaseUser):
    # 계정관련
+
     identifier = models.CharField(max_length=20, unique=True)
     identifier = models.CharField(max_length=20, unique=True, null=True, blank=False) # 로그인 할 때 사용할 식별자.
+
    is_active = models.BooleanField(default=True)
     email = models.EmailField(max_length=60)
+
     is_admin = models.BooleanField(default=False)
 
     profile = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, blank=True)  # 연결할 프로필모델. 아래에서 정의.
 
     profile = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, blank=True)  # 연결할 프로필모델. 아래에서 정의.
 
     # 프로필이 사라지면 사용자 모델도 한꺼번에 다 없어지게끔!
 
     # 프로필이 사라지면 사용자 모델도 한꺼번에 다 없어지게끔!
 +
    objects = UserManager()  # 회원가입을 다룰 클래스를 지정한다.
   −
    # 유저권한 관련
+
     USERNAME_FIELD = 'identifier'   # 식별자로 사용할 필드.
    is_active = models.BooleanField(default=True)  # 장고 필수필드. 이게 false면 로그인 자체가 안됨.
+
     REQUIRED_FIELDS = []           # 회원가입 필수 입력필드.
    is_staff = models.BooleanField(default=False)
  −
    is_admin = models.BooleanField(default=False)  # 장고 필수필드
  −
    is_superuser = models.BooleanField(default=False)
  −
 
  −
     USERNAME_FIELD = 'identifier' # 어떤 것을 로그인 때의 식별자로 사용할 것인가.
  −
     REQUIRED_FIELDS = ['email', ] # 입력할 필수입력 필드 지정.
      
     def __str__(self):
 
     def __str__(self):
         return self.email#self.nickname +'.' +self.identifier
+
         return self.identifier
    def has_perm(self, perm, obj=None):  # 이건 뭐람;;?
+
</syntaxhighlight>그리고 프로필 계정은 필요에 따라 다음과 같이 짠다. User에서 참고해야 하므로 User모델보다 위에 위치하게 해주자.<syntaxhighlight lang="python">
        return self.is_admin
  −
    def has_module_perms(self, app_label):
  −
        return True
  −
 
  −
    objects = AccountManager()  # 회원가입을 다루는 클래스.
  −
</syntaxhighlight>그리고 프로필 계정은 필요에 따라 다음과 같이 짠다.<syntaxhighlight lang="python">
   
class Profile(models.Model):
 
class Profile(models.Model):
 
     '''계정모델에서 연결하여 상위에 있는, 하위 SNS계정을 종합하는 프로필.'''
 
     '''계정모델에서 연결하여 상위에 있는, 하위 SNS계정을 종합하는 프로필.'''
55번째 줄: 47번째 줄:  
<div class="alert alert-danger">
 
<div class="alert alert-danger">
 
     <h1><strong>프로필을 등록해야 글을 쓸 수 있습니다.</strong></h1>
 
     <h1><strong>프로필을 등록해야 글을 쓸 수 있습니다.</strong></h1>
     <h2><a href="{% url 'membership:create_profile' %}">프로필 생성</a></h2>
+
     <h2><a href="{% url 'account:create_profile' %}">프로필 생성</a></h2>
 
</div>
 
</div>
 
{% endif %}
 
{% endif %}