signup - pai-plznw4me/django-initializer GitHub Wiki
User Model κ³Ό Form, Model μ λν κΈ°λ³Έμ§μμ΄ μμ΄μΌ νλ€.
3κ°μ§ Type μΌλ‘ λλμ΄μ§λ€. μμ μ΄ μ μ©νκ³ μΆμ ννΈκ° μ΄λμλμ§ μλ νλ‘ νμΈνκΈΈ λ°λλ€.
id, pw μ΄μΈμ user field attribute μ¬μ© | user field μΆκ° | |
---|---|---|
Signup Basic | X | X |
Signup Custom | O | X |
Signup Custom with Model | O | O |
Signup Basic
django μμ μ 곡ν΄μ£Όλ UserCreationForm μ μ¬μ©νλ©΄ user, pw μ ν΅ν΄ λ±λ‘ν μ μλ€.
django User model fields(official)
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
result = form.is_valid()
if form.is_valid():
user = form.save()
auth.login(request, user)
return redirect('home')
elif request.method == 'GET':
form = UserCreationForm()
return render(request, template_name='accounts/signup.html', context={'form': form})
else:
raise NotImplementedError
Signup Custom
User attribute μλ μμ§λ§ UserCreateForm μλ μ‘΄μ¬νμ§ μλ field μ νμκ°μ μ 보μ¬μ£Όκ³ μΆμλ
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(max_length=200)
class Meta:
model = User
fields = ('username', 'email', "password1", "password2")
def signup(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST) # <-λ°λ λΆλΆ
result = form.is_valid()
if form.is_valid():
user = form.save()
auth.login(request, user)
return redirect('home')
else:
return render(request, template_name='accounts/signup.html', context={'errors': form.errors})
elif request.method == 'GET':
form = CustomUserCreationForm() # <-λ°λ λΆλΆ
return render(request, template_name='accounts/signup.html', context={'form': form})
else:
raise NotImplementedError
Signup Custom with Model
User attribute μλ μλfield μ νμκ°μ
μ 보μ¬λ°κ³ μΆμλ
AbstractUser
μ μμ λ°μ μ¬μ©νλ€.
AbstractUser
μ AbstractBaseUser
μ μμλ°μ ν΄λμ€μΈλ° νμν κΈ°λ₯λ€μ μ΄λμ λ ꡬνν΄ λμλ€.
User
Model μ field μ νμ₯ν λ €λ©΄ User
μ κΈ°λ₯λ€μ λ€ κ°μ ΈμμΌ νλ€. μ¦ μμ λ°μμΌ νλ€.
λͺ©ν : User Field μ μ¬λ μ§μνκ³ Phone number μ μΆκ°νλ€κ³ ν΄λ³΄μ.
Step 1. User λͺ¨λΈ μμλ°μ μλ‘μ΄ field μΆκ°νκΈ°
# accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here.
class CustomUser(AbstractUser):
region = models.CharField()
phone_number = models.IntegerField()
def __str__(self):
return self.username
Step 2. κΈ°μ‘΄ μ μ μλ‘μ΄ ModelForm μμ±νκΈ°
# accounts/forms.py
from django.contrib.auth.forms import UserChangeForm
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ('username', 'email', 'password1', 'password2') #<- User μμ±μ 보μ¬μ€ field μ μ μνλ€.
Step 3. Django μμ κΈ°μ‘΄ User μ λ°λΌλ³΄μ§ μκ³ CustomUser μ κΈ°λ³Έ User λ‘ λ°λΌλ³΄κ² νλ€.
# settings.py
...
AUTH_USER_MODEL = 'accounts.CustomUser'