<aside> 💡 #forms #views #signup #urls #app_name #urlpatterns
</aside>
사용자가 회원가입을 할 때 필요한 필드들과 유효성 검사를 정의합니다. 필수 module과 import를 정의해야 합니다. SignUpForm을 사용하면 사용자가 사용자명, 이메일, 비밀번호, 비밀번호 확인을 제공하여 회원가입할 수 있습니다.
UserCreationForm
: 사용자 등록의 위해 미리 구현된 Form 입니다.email
은 필수 필드임을 나타냅니다.Meta
: 모델의 기본 필드를 수정할 수 있는 확장성을 제공해주는 클래스입니다. 자세한 정보는 다음 링크를 확인하세요. https://docs.djangoproject.com/en/4.2/topics/forms/modelforms/#overriding-the-default-fieldsfrom django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class SignUpForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
사용자 요청을 처리하고, 데이터를 가공하여 템플릿에 전달하거나 HTTP 응답을 반환합니다. 필수 module과 import를 정의해야 합니다.
from django.shortcuts import render, redirect
from .forms import SignUpForm
from django.contrib.auth import login
signup 함수의 정의
POST
요청에 대하여 Form 유효성 검사를 수행하고 새로운 유저를 생성 및 저장, 로그인 합니다.SignUpForm
을 생성하여 HttpRequest
의 context
로 전달하여 동적으로 Form을 관리합니다.def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
# 폼 데이터를 저장하고 새로운 사용자를 생성
login(request, user)
return redirect('home')
else:
# 요청 방식이 POST가 아닌 경우,
form = SignUpForm():
return render(request, 'signup.html', {'form': form})
# 'signup.html' 템플릿을 렌더링하고, 폼 객체를 'form' 컨텍스트 변수로 전달
URL 매핑을 정의합니다. 클라이언트의 요청을 처리할 뷰 함수나 클래스로 연결해주는 역할을 합니다.
app_name
을 정의하여 reverse
가 가능하게 만들어줍니다. 예를 들어 reverse("users:signup")
는 users.signup
을 찾게 될 것입니다.urlpatterns
리스트에 path
함수를 사용하여 URL 패턴을 정의합니다.from django.urls import path
from users.views import signup
# 'users'앱의 views.py 파일에서 signup 함수를 임포트합니다.
app_name = 'users'
# 앱의 이름을 정의합니다.
urlpatterns = [
path('signup/', signup, name='signup'),
]