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})