[python] Flask-WTF에서 폼을 검증하기 전에 전처리를 수행하는 방법은 어떻게 되나요?

아래는 사용 예시입니다:

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

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

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    
    # 전처리를 수행하는 함수
    def preprocess_data(form):
        # 폼 데이터들을 전처리하는 로직을 작성합니다.
        form.name.data = form.name.data.upper()  # 이름을 대문자로 변환합니다.
    
    # 폼이 제출되고 유효성 검사 전에 실행됩니다.
    if form.validate_on_submit():
        preprocess_data(form)
        # 폼 데이터를 처리하는 로직을 작성합니다.
        return 'Form validation passed!'
    
    return render_template('index.html', form=form)

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

위의 예시에서는 MyForm이라는 폼 클래스를 정의합니다. preprocess_data()라는 전처리 함수를 작성하여 폼 데이터를 수정할 수 있습니다. 이전처리 함수에서는 form.name.data를 대문자로 변환하는 예시가 포함되어 있습니다.

index() 함수에서는 폼이 제출될 때 유효성 검사 전에 preprocess_data() 함수를 실행합니다. 이렇게 하면 전처리된 데이터를 사용하여 폼 데이터를 처리할 수 있습니다.

물론 실제로는 전처리 함수에서 더 복잡한 로직을 사용할 수 있으며, 여러 개의 필드들을 처리할 수도 있습니다. 이 예시는 전처리 기능을 이해하기 위한 간단한 예시입니다.

더 자세한 정보는 Flask-WTF 문서를 참고하세요.