Flask-WTF는 Flask를 위한 WTForms 통합 확장입니다. WTForms는 웹 양식을 만들고 처리하는 데 도움이 되는 파이썬 라이브러리입니다. Flask-WTF를 사용하여 웹 양식을 만들 때, 폼 요소들을 그룹으로 묶어서 표현하는 방법이 있습니다.
폼 요소들을 그룹으로 묶는 가장 간단한 방법은 FormField
와 FieldList
를 사용하는 것입니다. FormField
는 다른 폼을 하위 폼으로 포함시킬 때 사용되며, FieldList
는 동적인 프론트엔드 부가 입력을 관리하는 도구입니다.
다음은 FormField
를 사용하여 폼 요소들을 그룹으로 묶는 예시 코드입니다.
from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField
from wtforms.validators import DataRequired
from wtforms.form import Form
class AddressForm(Form):
street = StringField('Street', validators=[DataRequired()])
city = StringField('City', validators=[DataRequired()])
postal_code = IntegerField('Postal Code', validators=[DataRequired()])
class UserForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
address = FormField(AddressForm)
위의 코드에서 AddressForm
은 주소를 입력하기 위한 폼이며, UserForm
은 사용자의 이름과 해당 사용자의 주소를 입력하는 폼입니다. UserForm
에는 address
필드가 있으며, 이 필드는 AddressForm
의 인스턴스를 가집니다. 이렇게 하면 사용자 폼과 주소 폼이 그룹으로 묶여 표현되게 됩니다.
FieldList
를 사용하여 동적인 폼 요소 그룹을 만들 수도 있습니다. 예를 들어, 여러 개의 이메일 주소를 입력하는 폼을 만들 때 사용할 수 있습니다. 아래는 FieldList
를 사용한 예시 코드입니다.
from flask_wtf import FlaskForm
from wtforms import StringField, FieldList
from wtforms.validators import DataRequired
class EmailForm(FlaskForm):
email = StringField('Email', validators=[DataRequired()])
class UserForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
emails = FieldList(FormField(EmailForm))
위의 코드에서 EmailForm
은 이메일을 입력하기 위한 폼이며, UserForm
에는 emails
필드가 있습니다. emails
필드는 EmailForm
의 인스턴스를 여러 개 가질 수 있도록 FieldList
로 묶여 있습니다. 이렇게 하면 사용자 폼에 동적으로 이메일 폼을 추가할 수 있게 됩니다.
Flask-WTF를 사용하여 폼 요소들을 그룹으로 묶는 방법에 대해 간단하게 알아보았습니다. 이를 통해 더 복잡한 웹 양식을 만들고 관리할 수 있습니다. Flask-WTF와 WTForms의 공식 문서를 참조하면 더 자세한 내용을 확인할 수 있습니다.
- Flask-WTF 공식 문서: https://flask-wtf.readthedocs.io/en/stable/
- WTForms 공식 문서: https://wtforms.readthedocs.io/en/stable/