9월 14일 TIL

이진범·2023년 9월 14일
0
  1. 폼을 정의하는 방법은 Django 폼(Form) 클래스를 사용하여 웹 어플리케이션에서 사용할 수 있는 폼을 생성하는 것입니다. 이 폼을 사용하면 웹 페이지에서 사용자 입력을 수집하고 처리할 수 있습니다. 폼을 정의하려면 Django의 forms 모듈을 사용하고, 필드와 유효성 검사 규칙을 설정해야 합니다. 아래는 간단한 회원가입 폼을 정의하는 예제입니다.

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)를 생성하고, 뷰에서 폼 데이터를 처리하는 것이 일반적인 웹 개발 프로세스입니다.

  1. Django에서 템플릿을 정의하려면 HTML 파일을 생성하고, 그 안에 Django 템플릿 언어(Template Language)를 사용하여 동적으로 데이터를 표시할 수 있는 템플릿 태그를 추가해야 합니다. 아래는 간단한 HTML 템플릿 예제입니다.

Django 프로젝트의 디렉터리 구조에서 templates 디렉터리를 생성합니다. 이 디렉터리에 HTML 템플릿 파일을 저장합니다.

templates 디렉터리 아래에 템플릿 파일을 생성하고, 해당 파일에 HTML 코드와 Django 템플릿 태그를 작성합니다. 예를 들어, signup.html 파일을 생성하고 다음과 같이 작성할 수 있습니다.

회원가입

회원가입

{% csrf_token %} {{ form.as_p }} 회원가입

위의 코드에서 {% 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 템플릿은 회원가입 폼을 표시하고, 뷰에서 전달한 데이터와 폼 에러 메시지를 템플릿을 통해 표시할 수 있게 됩니다.

profile
글 보다 코딩 먼저

0개의 댓글