Django/Django 회원 관리
Django) 모델(model)과 폼(form) 의 활용
jinsang-2
2024. 4. 25. 18:46
1) 사용자 정의 모델 생성 ( models.py )
from django.db import models
from django.contrib.auth.models import AbstractUser
class Users(AbstractUser):
level = models.CharField(max_length=10)
profile_img = models.ImageField(upload_to='profile_images/', null=True, blank=True)
Users모델은 Django의 기본 `AbstractUser`를 확장하여 사용자의 level과 프로필 이미지를 추가로 저장할 수 있게 합니다.
2) form 확장
user_form.py 파일 생성 후 아래 내용 입력
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
class UserCreateForm(UserCreationForm):
class Meta:
model = Users
fields = ('username', 'email', 'password1', 'password2', 'level', 'profile_img')
class UserModifyForm(UserChangeForm):
class Meta:
model = Users
fields = ('username', 'email', 'level', 'profile_img')
- UserCreateForm은 회원가입 할 때 사용
- UserModifyForm은 회원정보 수정시 사용
3) 회원가입 views.py 예시
request.FILES 는 프로필 사진에 등록할 IMAGE 파일
def signup_view(request):
if request.method == 'POST':
form = UserCreateForm(request.POST, request.FILES)
print(form.errors)
if form.is_valid():
user = form.save()
login(request, user) # 회원 가입 즉시 로그인
return redirect('index') # 홈페이지 or 대시보드로 리다이렉트
else:
form = UserCreateForm()
return render(request, 'user/signup.html', {'form': form})