Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 결과를얻는법
- 인하멘토링
- 서구동구예비군훈련장
- 인하대학교
- 한빛미디어
- 인천남중
- 서버로그
- 로그남기기
- CrossAngle
- 프로그래머스
- 심플소프트웨어
- 2019회고
- 봉사활동
- texttospeech
- 개발자회고
- 우분투비트확인
- 쇠막대기
- intell
- machinelearning
- 나는리뷰어다
- 프로그라피
- tacotron
- graphicdriver
- 노트북덮개
- jaypark.dating
- 신영준
- Xangle
- 놀이동산의슈퍼컴퓨터를작동시켜라
- 개발자를위한파이썬
- 타코트론
Archives
- Today
- Total
jc.jang
14강 커스텀 User Model 만들기 본문
주제
- 커스텀 User Model 만들기
- 다양한 방법으로 User Model을 커스텀 할 수 있다.
노트
- 예전에 프로젝트를 진행하다 필요에 의해 찾아본 적이 있다. 여러가지 방법이 있다.
- 프로젝트 시작 전에, 적용 여부가 필요한 것도 있고 프로젝트 진행 중에 적용 가능한 것도 있다.
- settings.AUTH_USER_MODEL 설정 값을 변경하여 기본 사용자 모델을 재정의 할 수 있다.
- User를 확장하는 4가지 방법에 대해 알아보자.
첫번째, auth.User 모델과 1:1 관계에 있는 별도 모델 만들기
- 이전 강의에서 Profile 모델을 만들고 OneToOneField로 User를 연결하는 것 처럼 새로운 모델을 만들면 된다.
- 마이그레이션 과정이 필요함
두번째, Proxy User 모델: 제한적인방법
- Proxy User 모델은 추가적으로 필드를 정의하지 않지만, 추가적인 함수를 구현하고자 할 때 사용한다.
- 이걸 언제쓸까 싶지만 model methods, manager, ordering 등을 정의할 때 사용된다고 한다.
- settings.AUTH_USER_MODEL에 지정 불가
- 실제 데이터베이스 변경은 없지만, 마이그레이션 과정이 필요하다.
세번째, AbstractUser 모델 상속
- 기본 User 클래스를 그대로 사용하고, 추가로 커스텀 필드/함수를 정의할 때사용
- 마이그레이션 과정이 필요
- settings.AUTH_USER_MODEL에 지정
- 예를 들어, accounts 앱에서 성별 필드를 추가한 User 모델을 기본 사용자 모델로 지정하고 싶다면 다음의 과정이 필요하다.
- accounts/models.py
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
sex = models.CharField(
max_length=1,
choices=(
('f', 'female'),
('m', 'male'),
))
- AbstractUser를 상속받고 sex field를 지정한다.
- 프로젝트/settings.py
AUTH_USER_MODEL = 'accounts.User'
- 앱에서 만든 사용자 모델을 기본 사용자 모델로 지정한다.
- accounts/admin.py
from django.contrib import admin
from .models import User
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
pass
- 관리자 페이지에도 등록을 해주면 localhost/admin에서 확인 가능하다.
- 프로젝트 시작 전에, 적용여부를 결정해야함
- 이미 기본 유저 모델을 migrate했다면, migrate를 다 되돌리고 적용해야하므로 상당히 번거롭다.
- 개인적으로, 첫번째 방법을 좋아한다.
네번째, AbstractBaseUser 모델 상속
- 세번째 방법과 비슷하다.
- 이 방법은 AbstarctUser 필드를 재정의하고 싶을 때 사용하면 된다.
- 자세한 사용 방법은 wikidocs.net을 참고
질문
- Proxy User는 언제 쓸까? 가입 환영 이메일을 여기서 작성하는건가? 이건 signupform에서 구현해도 될 것 같은데...? 흠... 언젠가 쓸 일이 있겠지!
요약
- 첫번째 방법이 간단해서 좋은데 사용하지 않는 데이터들이 많거나 아예 새롭게 정의하고 싶다면 세번째 방법도 좋을 것 같다. 근데 나는 첫번째 방법이 간단하니까 이걸 쓸래요.
날짜
- 오전 11시 30분, 20190905
'Django > Django - 인증편' 카테고리의 다른 글
16강 Permission 시스템을 통한 사용자 접근 제한하기 (2) | 2019.09.09 |
---|---|
15강 User Admin 커스텀하기 (0) | 2019.09.08 |
13강 암호 재설정 구현하기 (0) | 2019.09.03 |
12강 암호 변경 구현하기 (0) | 2019.09.03 |
11강 이메일을 통한 URL 로그인 만들기 (0) | 2019.09.03 |
Comments