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

Flask-WTF는 Flask 애플리케이션에서 웹 폼을 쉽게 구성할 수 있게 도와주는 패키지입니다. 사용자에게 선택적인 필드를 보여주려면 조건에 따라 폼 필드를 추가하거나 삭제할 수 있습니다.

예를 들어, 회원 가입 폼에서 선택적인 선택 항목을 동적으로 제공하려는 경우 다음과 같이 할 수 있습니다.

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SelectField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

class RegistrationForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    country = SelectField('Country', validators=[DataRequired()], choices=[
        ('', 'Select Country'),
        ('KR', 'Korea'),
        ('US', 'United States'),
        ('JP', 'Japan')
    ])
    additional_info = StringField('Additional Info')
    submit = SubmitField('Submit')

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()

    if form.country.data == 'KR':
        form.additional_info.validators = [DataRequired()]
    else:
        form.additional_info.validators = []

    if form.validate_on_submit():
        # 폼 제출 처리 로직

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

if __name__ == '__main__':
    app.run()

위의 코드에서는 RegistrationForm 클래스를 정의하고 폼 필드를 추가하여 회원 가입 폼을 생성합니다. SelectField를 사용하여 국가 선택을 위한 드롭다운 메뉴를 만들었습니다.

register() 함수에서 form.country.data 값을 확인하여 선택한 국가가 “KR”인지 확인합니다. 만약 선택한 국가가 “KR”이라면 form.additional_info.validators[DataRequired()]로 설정하여 입력 필수 조건을 적용합니다. 다른 경우에는 form.additional_info.validators를 비워 빈 리스트로 설정하여 선택적인 필드로 처리합니다.

또한, form.validate_on_submit()을 통해 폼이 유효한지 확인하고 폼 제출 처리 로직을 추가할 수 있습니다.

이렇게 하면 사용자에게 선택적인 필드를 보여줄 수 있습니다. Flask-WTF를 사용하면 편리하게 웹 폼을 구성할 수 있으며, 유연한 조건 처리로 선택적인 필드를 동적으로 제공할 수 있습니다.