본문 바로가기
TIL - 프로그래밍/개념, 설정

[Python] User

by chaemj97 2022. 4. 18.
728x90
  • User 모델 대체
    • 일부 프로젝트에서는 Django의 내장 User 모델이 제공하는 인증 요구사항이 적절 X
      • ex) username 대신 email을 식별 토큰으로 사용하는 것이 적합한 사이트
    • Django는 User를 참조하는데 사용하는 AUTH_USR_MODEL 값을 제공하여, default user model을 재정의 할 수 잇도록 함
    • Django는 커스텀 유저 모델을 설정하는 것을 강력 권장
      • 단, migrations 실행하기 전에 이 작업을 마쳐야 함
  • AUTH_USER_MODEL
    • User를 나타내는 모델
    • 프로젝트가 진행되는 동안 변경X
    • 프로젝트 시작 시 설정, 참조하는 모델은 첫번째 마이그레이션에서 사용할 수 있어야 함
    • 기본 값 : 'auth.User' (auth 앱의 User 모델)
  • Custom User 모델 정의
    # 앱/models.py
    
    from django.contrib.auth.models import AbstractUser
    class User(AbstractUser):
    	pass
        
    # 앱의 User모델을 사용하도록 변경    
    # 프로젝트/settings.py
    AUTH_USER_MODEL = '앱.User'
    
    # 앱/admin.py
    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from .models import User
    admin.site.register(User,UserAdmin)
    
    # 기존 내장 User 모델을 사용한 ModelForm을 커스텀 모델로 대체
    # UserCreationForm, UserChangeForm
    # UserCreationForm 확장
    # 앱/forms.py
    from django.contrib.auth.forms import UserCreationForm
    from myapp.models import CustomUser
    class CustomUserCreationForm(UserCreationForm):
    	class Meta(UserCreationForm.Meta):
        	model = CustomUser
            fields = UserCreationForm.Meta.fields + ('custom_field',)
  • User 모델 참조
    • settings.AUTH_USER_MODEL
      • User 모델에 대한 외래 키 또는 다대다 관계를 정의 할 때 사용
      • models.py에서 User모델을 참조할 때 사용
    • get_user_model()
      • 현재 활성화된 User 모델 반환
        • User를 직접 참조하지 않는 이유
      • models.py가 아닌 다른 모든 곳에서 유저 모델을 참조할 때 사용
728x90
반응형

'TIL - 프로그래밍 > 개념, 설정' 카테고리의 다른 글

REST API  (0) 2022.04.19
Django Handling HTTP requests  (0) 2022.04.18
[Python] 외부 키, 참조  (0) 2022.04.17
[Python] ORM aggregate  (0) 2022.04.16
[Python] 데이터베이스  (0) 2022.04.15

댓글