일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리액트 훅
- 리액트
- useState
- 프로그래밍 언어론
- React JS
- design pattern
- websocket
- JavaScript
- vanillaJS
- 장고
- 프로그래머스 완전탐색
- 프로그래머스 자바
- react hook
- react
- 자바 공부
- 코딩테스트 고득점 Kit
- 컴퓨터 네트워크
- 디자인 패턴
- 자바스크립트
- 코틀린
- 코딩테스트 고득점 Kit 완전탐색
- 백준
- react firebase
- 프로그래머스
- codesandbox
- NextJS
- 데이터모델링과마이닝
- Java
- useEffect
- 자바
- Today
- Total
기록하는 개발자
[Django] 사용자 확장 본문
<사용자 확장>
장고에서 기본적으로 제공하는 user table의 속성에 추가로 항목을 넣고 싶을 때 form을 커스텀화 할 수 있다.
기존 회원 가입 시 입력 받는 내용 : username, password1, password2(재확인용)
추가로 입력 받고 싶은 항목 : nickname, location, university
1. models.py
from django.db import models
from django.contrib.auth.models import AbstractUser #상속 받기
class CustomUser(AbstractUser):
nickname = models.CharField(max_length=100)
university = models.CharField(max_length=50)
location = models.CharField(max_length=200)
2. settings.py 설정
- 상속 만으로 바로 사용할 수 없으므로 settings.py 에 알리기
- ALLOWED_HOSTS 아래에 AUTH_USER_MODEL = 'account.CostomUser' 추가
DEBUG = True
ALLOWED_HOSTS = []
AUTH_USER_MODEL = 'account.CustomUser'
3. 터미널에서 python manage.py makemigrations 실행
4. 터미널에서 python manage.py migrate 실행
*오류가 발생하는 경우
- settings.py 의 admin 관련 부분 주석처리
- urls.py의 admin 관련 부분 주석처리
- python manage.py migrate 다시 실행
- 위 주석 처리 했던 부분 주석 취소하기
<settings.py>
INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig',
'account',
]
<urls.py>
#from django.contrib import admin
from django.urls import path, include
from blog.views import *
urlpatterns = [
#path('admin/', admin.site.urls),
path('', home, name="home"),
5. account app 에 forms.py 생성
- views.py에서 UserCreationForm대신 RegisterForm 사용
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser
class RegisterForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ['username', 'password1','password2','nickname','location','university']
<forms.py의 RegisterForm을 적용한 views.py - 회원가입 부분>
from django.shortcuts import render, redirect
from django.contrib.auth.forms import AuthenticationForm #수정된 코드
from django.contrib.auth import authenticate, login, logout
from .forms import RegisterForm
def register_view(request):
if request.method=='POST':
form = RegisterForm(request.POST) #수정된 코드
if form.is_valid():
user = form.save()
login(request, user)
return redirect("home")
else :
form=RegisterForm() #수정된 코드
return render(request, 'signup.html', {'form':form})
6. account app의 admin.py 설정
- user 확장 시 admin으로 이동하면 user가 사라져 있는데 이를 해결 하기위해 admin 설정
from django.contrib import admin
from .models import CustomUser
admin.site.register(CustomUser)
- admin페이지와 signup 페이지를 통해 장고에서 기존에 제공하는 사항 이외의
내가 추가한 nickname, university, location 항목이 생긴 것을 볼 수 있다.
'Web > Django' 카테고리의 다른 글
[Django] Paginator (0) | 2021.06.05 |
---|---|
[Django] 로그인 및 회원가입 구현 (0) | 2021.06.02 |
[Django] Form (0) | 2021.05.27 |
[Django] media (0) | 2021.05.27 |
[Django] static (0) | 2021.05.27 |