Today I Learned/django

장고(django) 회원가입 (UserCreationForm)

하나719 2023. 9. 7. 17:24
반응형

2023.08.11 - 장고 (django) - LoginView, LogoutView, LoginRequireMixin 설정하기

 

장고 (django) - LoginView, LogoutView, LoginRequireMixin 설정하기

데이터역량 키우는 하루하루의 기록

hanawithdata.tistory.com

로그인 관련해서는 위에 글 참고!

 

1. 기본적인 회원 가입 화면 생성

1) views.py

def register(request):

    if request.method=='POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()

    form = UserCreationForm()
    context = {'form':form}
    return render(request, 'accounts/register.html', context)

2) urls.py

from django.urls import path
from . import views


urlpatterns= [
    path('register/', views.register, name='register'),

]

3) templates > accounts> register.html

<form method="POST">
    {{ form.as_p }}
    {% csrf_token %}
    <input type="submit" value="가입하기">
</form>

*화면

- 기본적으로 username과 pawword 입력 및 확인하는 칸이 제공됨 

2. UserCreationForm 으로 커스텀하기

1) forms.py 

- fields에 사용하고 싶은 필드 작성 

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User


class NewUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username','first_name','last_name','email','password1','password2']

2) views.py 수정

위에 작성한 forms의 NewUserForm을 import 해주고, UserCreationForm을 NewUserForm으로 수정

def register(request):

    if request.method=='POST':
        form = NewUserForm(request.POST)
        if form.is_valid():
            form.save()

    form = NewUserForm()
    context = {'form':form}
    return render(request, 'accounts/register.html', context)

*화면

- 기본 필드외에 first_name, last_name, email이 추가된것을 확인할 수 있음

반응형