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

Flask-WTF를 사용하면 사용자에게 개별 필드를 선택적으로 보여줄 수 있습니다. 이 기능을 사용하면 사용자에게 필요한 정보만 입력하도록 할 수 있습니다. 이를 통해 입력 양식을 단순화하고, 사용자 경험을 개선할 수 있습니다.

Flask-WTF에서 사용자에게 선택적인 필드를 보여주거나 숨기는 방법은 conditional 데코레이터와 HiddenField 클래스를 사용하는 것입니다.

우선, 필드를 숨기고자 하는 경우 HiddenField를 사용합니다. 아래는 사용자가 숨길 필드를 선택할 수 있는 예제 코드입니다.

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

class MyForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = StringField('Password', validators=[DataRequired()])
    remember_me = HiddenField('Remember Me')
    submit = SubmitField('Submit')

위의 코드에서 remember_me 필드는 사용자에게는 보여지지 않지만, 서버측에서는 값을 받을 수 있습니다.

반면, 사용자에게 보여줄 필드를 선택하려면 conditional 데코레이터를 사용해야 합니다. 아래는 conditional 데코레이터를 사용하여 필드를 동적으로 컨트롤하는 예제 코드입니다.

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

class MyForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])

    @conditional('username', depends_on='remember_me')
    def password(self):
        return StringField('Password', validators=[DataRequired()])

    remember_me = BooleanField('Remember Me')
    submit = SubmitField('Submit')

위의 코드에서 password 필드는 remember_me를 선택할 때에만 보여집니다. conditional 데코레이터는 첫 번째 인자로 조건에 해당하는 필드를 지정하고, depends_on 인자로 종속되는 필드를 지정합니다.

이러한 방법을 통해 Flask-WTF를 사용하여 사용자에게 선택적인 필드를 보여주거나 숨길 수 있습니다.

Flask-WTF 문서를 참조하여 좀 더 자세한 정보를 확인할 수 있습니다. Flask-WTF 문서