[python] Flask-WTF에서 폼 요소들을 그룹화하여 묶어 표현하는 방법은 어떻게 되나요?

FormField는 다른 폼을 그룹화하는 데 사용됩니다. 예를 들어, 회원 가입 폼에 사용자 정보 폼과 주소 폼이 있다고 가정해봅시다. 이 경우, UserFormAddressForm 폼을 정의하고, UserFormAddressForm에 포함시킬 수 있습니다.

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class UserForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    password = StringField('Password', validators=[DataRequired()])
    #...

class AddressForm(FlaskForm):
    street = StringField('Street', validators=[DataRequired()])
    city = StringField('City', validators=[DataRequired()])
    #...

class RegistrationForm(FlaskForm):
    user_info = FormField(UserForm)
    address_info = FormField(AddressForm)
    submit = SubmitField('Register')

FieldList는 동적으로 늘어나는 요소들을 그룹화하는 데 사용됩니다. 예를 들어, 여러 개의 전화번호를 입력받는 폼이 있다고 가정해봅시다. 이 경우, PhoneNumberForm을 정의하고 FieldList 내에서 사용할 수 있습니다.

from flask_wtf import FlaskForm
from wtforms import StringField, FieldList, FormField, SubmitField
from wtforms.validators import DataRequired

class PhoneNumberForm(FlaskForm):
    number = StringField('Phone Number', validators=[DataRequired()])

class ContactForm(FlaskForm):
    phone_numbers = FieldList(FormField(PhoneNumberForm), min_entries=1)
    submit = SubmitField('Save')

위의 예제에서는 phone_numbers 필드가 동적으로 늘어나도록 설정되었습니다. 사용자는 “Phone Number” 필드에 계속해서 새로운 전화번호를 추가할 수 있습니다.

이렇게 Flask-WTF에서 폼 요소들을 그룹화하여 묶을 수 있으며, 이를 통해 복잡한 폼을 구성할 수 있습니다.