Flask-WTF는 Flask 프레임워크와 함께 동작하는 WTForms의 확장된 기능을 제공하는 라이브러리입니다. 동적으로 생성된 폼 필드는 사용자가 요청을 통해 전달하는 데이터를 처리하기 위해 필요한 경우가 많습니다. Flask-WTF를 사용하여 동적으로 생성된 폼 필드의 값을 처리하는 방법은 다음과 같습니다.
먼저, Flask-WTF를 설치해야 합니다. 터미널에서 다음 명령을 실행하여 Flask-WTF를 설치합니다:
pip install flask-wtf
다음으로, Flask-WTF의 Form
클래스를 상속받은 사용자 정의 폼 클래스를 만듭니다. 필드를 동적으로 생성해야 하는 경우, 다음과 같이 FieldList
와 FormField
를 사용할 수 있습니다:
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
라는 동적인 필드를 가지고 있습니다. FieldList
와 FormField
를 사용하여 동적 필드를 생성하며, 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는 간편한 폼 처리를 위한 다양한 기능을 제공하므로, 자세한 사용법은 공식 문서를 참조하는 것이 좋습니다.
참고 자료:
- Flask-WTF 공식 문서: https://flask-wtf.readthedocs.io/