[python] Flask-WTF에서 사용자에게 선택적인 필드를 보여주거나 숨기는 방법은 어떻게 되나요?

Flask-WTF는 Flask를 기반으로한 웹 애플리케이션 개발을 위한 폼 유효성 검사 기능을 제공하는 확장 모듈입니다.

아래는 사용자에게 선택적인 필드를 보여주거나 숨기는 예시입니다:

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

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    show_additional_field = BooleanField('Show Additional Field')

    # Conditional validation
    def validate_show_additional_field(form, field):
        if field.data:
            # Show additional field when checkbox is checked
            field.additional_field.validators = [DataRequired()]
            field.additional_field.flags.required = True
        else:
            # Hide additional field when checkbox is unchecked
            field.additional_field.validators = []
            field.additional_field.flags.required = False

    additional_field = StringField('Additional Field', validators=[])

# 뷰 함수에서 MyForm을 사용한다면
@app.route('/my-form', methods=['GET', 'POST'])
def my_form():
    form = MyForm()

    if form.validate_on_submit():
        # 폼이 제출되면 이곳에서 처리
        # 필요한 필드 값에 접근: form.name.data, form.additional_field.data 등

    return render_template('my_form.html', form=form)

위 예시에서 MyForm 클래스에서 show_additional_field 필드는 추가적인 필드를 보여주는 체크박스입니다. validate_show_additional_field 메소드는 show_additional_field 필드 값에 따라 additional_field 필드의 유효성 검사를 제어합니다. 체크박스가 체크되면 additional_field 필드가 나타나고, 언체크되면 숨겨집니다.

뷰 함수에서 MyForm을 사용할 때는 form.validate_on_submit()을 통해 폼이 제출되었는지 확인하고 필요한 필드 값을 접근할 수 있습니다.

Flask-WTF를 사용하면 선택적인 필드를 보여주거나 숨길 수 있으며, 이를 활용하여 동적인 폼을 구성할 수 있습니다.

더 자세한 사용법은 Flask-WTF 공식 문서를 참고하세요.