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>그럼 이제 이 모델로 계정관리가 가능해진다. |
| ==모델== | | ==모델== |
| 커스텀유저를 외래키로 사용하고 싶다면 | | 커스텀유저를 외래키로 사용하고 싶다면 |