from django import forms
class SignUpForm(forms.Form):
name = forms.CharField(label='이름', max_length=100)
email = forms.EmailField(label='이메일')
password = forms.CharField(label='비밀번호', widget=forms.PasswordInput)
password2 = forms.CharField(label='비밀번호 확인', widget=forms.PasswordInput)
%유효성 검사 규칙을 설정할 수도 있습니다.%
def clean_password2(self):
password = self.cleaned_data.get('password')
password2 = self.cleaned_data.get('password2')
if password and password2 and password != password2:
raise forms.ValidationError('비밀번호와 비밀번호 확인이 일치하지 않습니다.')
%다른 필드나 폼 전체에 대한 유효성 검사도 추가할 수 있습니다.%
def clean(self):
cleaned_data = super().clean()
name = cleaned_data.get('name')
# 다른 유효성 검사 규칙 추가
%추가적인 커스텀 메서드나 로직을 정의할 수도 있습니다.%
def custom_method(self):
# 커스텀 로직 작성
위의 코드는 SignUpForm 클래스를 정의하고, 사용자로부터 이름, 이메일, 비밀번호, 비밀번호 확인을 입력받을 수 있는 폼을 생성합니다. 필요에 따라 유효성 검사 규칙을 설정하거나, 커스텀 메서드를 추가하여 추가적인 로직을 수행할 수 있습니다.
폼을 정의한 후, 해당 폼을 뷰(View)에서 사용하여 웹 페이지에서 데이터를 수집하고 처리할 수 있습니다. 이렇게 정의한 폼을 HTML 템플릿과 연동하여 사용자 인터페이스(UI)를 생성하고, 뷰에서 폼 데이터를 처리하는 것이 일반적인 웹 개발 프로세스입니다.
Django 프로젝트의 디렉터리 구조에서 templates 디렉터리를 생성합니다. 이 디렉터리에 HTML 템플릿 파일을 저장합니다.
templates 디렉터리 아래에 템플릿 파일을 생성하고, 해당 파일에 HTML 코드와 Django 템플릿 태그를 작성합니다. 예를 들어, signup.html 파일을 생성하고 다음과 같이 작성할 수 있습니다.
회원가입위의 코드에서 {% csrf_token %}은 CSRF 토큰을 추가하는 템플릿 태그입니다. {{ form.as_p }}은 폼을 렌더링하여 HTML 폼 필드로 변환하는 템플릿 태그입니다. 이렇게 하면 폼 필드가 자동으로 생성됩니다.
이제 뷰(View)에서 해당 템플릿을 렌더링하고 웹 페이지에 표시할 데이터를 템플릿에 전달해야 합니다. 아래는 뷰에서 템플릿을 렌더링하는 예제입니다.
from django.shortcuts import render
from .forms import SignUpForm # SignUpForm은 폼 클래스의 이름에 따라 수정해야 할 수도 있습니다.
def sign_up_view(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
# 폼이 유효하면 추가 로직을 수행
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
위의 뷰 코드에서 render 함수를 사용하여 signup.html 템플릿을 렌더링하고, {'form': form}과 같이 컨텍스트 데이터를 템플릿에 전달합니다.
이제 signup.html 템플릿은 회원가입 폼을 표시하고, 뷰에서 전달한 데이터와 폼 에러 메시지를 템플릿을 통해 표시할 수 있게 됩니다.