[python] Flask-WTF에서 동적으로 생성된 폼 필드의 값을 어떻게 처리할 수 있나요?

Flask-WTF는 Flask 프레임워크와 함께 동작하는 WTForms의 확장된 기능을 제공하는 라이브러리입니다. 동적으로 생성된 폼 필드는 사용자가 요청을 통해 전달하는 데이터를 처리하기 위해 필요한 경우가 많습니다. Flask-WTF를 사용하여 동적으로 생성된 폼 필드의 값을 처리하는 방법은 다음과 같습니다.

먼저, Flask-WTF를 설치해야 합니다. 터미널에서 다음 명령을 실행하여 Flask-WTF를 설치합니다:

pip install flask-wtf

다음으로, Flask-WTF의 Form 클래스를 상속받은 사용자 정의 폼 클래스를 만듭니다. 필드를 동적으로 생성해야 하는 경우, 다음과 같이 FieldListFormField를 사용할 수 있습니다:

from flask_wtf import FlaskForm
from wtforms import StringField, FieldList, FormField, SubmitField

class DynamicForm(FlaskForm):
    dynamic_field = StringField('Dynamic Field')
    submit = SubmitField('Submit')

class MainForm(FlaskForm):
    dynamic_fields = FieldList(FormField(DynamicForm))
    submit = SubmitField('Submit')

위의 코드에서 MainForm 클래스는 dynamic_fields라는 동적인 필드를 가지고 있습니다. FieldListFormField를 사용하여 동적 필드를 생성하며, DynamicForm 클래스는 실제 필드를 정의하는 역할을 합니다.

이제, Flask 뷰 함수에서 동적 폼 필드의 값을 처리할 수 있습니다. 예를 들어, 다음과 같이 POST 요청을 처리하는 뷰 함수를 작성할 수 있습니다:

from flask import Flask, render_template, request
from flask_wtf import FlaskForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MainForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            # 폼 필드 값 처리 로직 작성
            for dynamic_form in form.dynamic_fields:
                dynamic_field_value = dynamic_form.dynamic_field.data
                # 필드 값에 대한 추가 로직 작성
            return 'Form submitted successfully'
    return render_template('index.html', form=form)

위의 코드에서 index 함수는 MainForm 객체를 생성하고, POST 요청을 받았을 때 유효성 검사를 수행한 후 동적 필드 값을 처리하는 로직을 작성합니다.

이와 같이 Flask-WTF를 사용하여 동적으로 생성된 폼 필드의 값을 처리할 수 있습니다. Flask-WTF는 간편한 폼 처리를 위한 다양한 기능을 제공하므로, 자세한 사용법은 공식 문서를 참조하는 것이 좋습니다.

참고 자료: