[python] Flask-WTF에서 폼 요소들을 그룹화하여 묶어 표현하는 방법은 어떻게 되나요?
FormField
는 다른 폼을 그룹화하는 데 사용됩니다. 예를 들어, 회원 가입 폼에 사용자 정보 폼과 주소 폼이 있다고 가정해봅시다. 이 경우, UserForm
및 AddressForm
폼을 정의하고, UserForm
을 AddressForm
에 포함시킬 수 있습니다.
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에서 폼 요소들을 그룹화하여 묶을 수 있으며, 이를 통해 복잡한 폼을 구성할 수 있습니다.