바뀜

둘러보기로 가기 검색하러 가기
536 바이트 제거됨 ,  2021년 11월 2일 (화) 10:27
147번째 줄: 147번째 줄:     
User 대신 settings.AUTH_USER_MODEL를 넣어주면 된다.
 
User 대신 settings.AUTH_USER_MODEL를 넣어주면 된다.
===관리자 화면에 등록===
+
==폼 작성==
admin.py를 작성한다.<syntaxhighlight lang="python">
+
모델 작성은 끝났는데, 해당 정보를 기입하기 위한 폼이 필요하다. 기본 폼은 password 따위를 암호화하지 않고 그대로 저장하기 때문이다. 폼을 밑바닥부터 만들려면 알아야 할 것도 많은데, 직접 만들기보단, UserCreationForm을 이용해 폼을 다뤄보자.
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', 'email','nickname', 'joined_at', 'last_login_at')
  −
    list_display_links = ('identifier', 'email')
  −
    exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
     −
    def joined_at(self, obj):
  −
        return obj.date_joined.strftime("%Y-%m-%d")
     −
    def last_login_at(self, obj):
  −
        if not obj.last_login:
  −
            return ''
  −
        return obj.last_login.strftime("%Y-%m-%d %H:%M")
  −
  −
    joined_at.admin_order_field = '-date_joined'      # 가장 최근에 가입한 사람부터 리스팅
  −
    joined_at.short_description = '가입일'
  −
    last_login_at.admin_order_field = 'last_login_at'
  −
    last_login_at.short_description = '최근로그인'
  −
</syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다.
  −
==폼 작성==
  −
기본 폼은 password 따위를 암호화하지 않고 그대로 저장한다. 폼을 밑바닥부터 만들려면 알아야 할 것도 많은데, UserCreationForm을 이용해 폼을 다뤄보자.
      
changeform은 굳이 사용하지 않아도 된다. 회원관리 참고..<syntaxhighlight lang="python">
 
changeform은 굳이 사용하지 않아도 된다. 회원관리 참고..<syntaxhighlight lang="python">
181번째 줄: 157번째 줄:  
from django.contrib.auth import get_user_model  # 직접 불러올 수도 있지만, settings 파일에서 설정된 모델을 자동으로 불러오는 편이 수정에 유용하지.
 
from django.contrib.auth import get_user_model  # 직접 불러올 수도 있지만, settings 파일에서 설정된 모델을 자동으로 불러오는 편이 수정에 유용하지.
   −
class UserCreateForm(UserCreationForm):
+
class User_create_form(UserCreationForm):
 
     class Meta:
 
     class Meta:
 
         model = get_user_model  #  설정된 커스텀모델
 
         model = get_user_model  #  설정된 커스텀모델
         fields = ["identifier","email"]  # 패스워드는 자동추가.
+
         fields = ["identifier"]  # password1,2 필드는 자동추가된다.
   −
class UserUpdateForm(UserChangeForm):
+
class User_change_form(UserChangeForm):
 
     class Meta:
 
     class Meta:
 
         model = get_user_model
 
         model = get_user_model
         fields = ["username", "password1", "password2", "email"]
+
         fields = ["identifier", "password1", "password2"]
</syntaxhighlight>굳이 많은 기능을 추가하지 않는다면 뷰에서 바로 장고 제공 폼을 사용하기도 한다.
+
</syntaxhighlight>password부분은 UserCreationForm에 정의된 것들이라 오버라이드 해줘야 한다.
 +
 
 +
비밀번호 조건은 settings.py의 AUTH_PASSWORD_VALIDATORS 안에 있는 조건들을 거쳐야 한다.
   −
password부분은 UserCreationForm에 정의된 것들이라 오버라이드 해줘야 한다.
     −
비밀번호 조건은 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')
 +
    list_display_links = ('identifier')
 +
    exclude = ('password',)  # 사용자 상세 정보에서 비밀번호 필드를 노출하지 않음
 +
</syntaxhighlight>그럼 이제 이 모델로 계정관리가 가능해진다.
 
==모델==
 
==모델==
 
커스텀유저를 외래키로 사용하고 싶다면
 
커스텀유저를 외래키로 사용하고 싶다면

둘러보기 메뉴