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

Flask-WTF는 Flask 프레임워크와 함께 사용되는 파이썬의 폼 처리 라이브러리입니다. 폼 데이터를 검증하기 전에 전처리를 수행해야 할 때가 있습니다. 이때 Flask-WTF를 사용하여 전처리를 수행할 수 있습니다.

Flask-WTF에서 폼의 전처리는 Flask-WTF의 Form 클래스에서 정의된 validate 메서드를 사용하여 수행할 수 있습니다. 이 메서드는 폼의 검증이 수행되기 전에 호출되는 메서드로, 여기에서 폼 데이터를 조작하거나 필요한 전처리 작업을 수행할 수 있습니다.

다음은 Flask-WTF를 사용하여 전처리를 수행하는 예제 코드입니다:

from flask import Flask, render_template
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()])
    email = StringField('Email', validators=[DataRequired()])
    submit = SubmitField('Submit')

    def validate(self):
        if not super(MyForm, self).validate():
            return False

        # 전처리 작업 수행
        self.name.data = self.name.data.upper()
        self.email.data = self.email.data.lower()

        return True


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

    if form.validate_on_submit():
        # 폼이 유효한 경우 처리 로직 수행
        return f"Hello, {form.name.data}! Your email is {form.email.data}."

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

위의 코드에서 MyForm 클래스는 FlaskForm을 상속받아 정의되었습니다. validate 메서드를 재정의하여 폼 데이터의 전처리 작업을 수행하고 있습니다. 여기에서는 name 필드의 값을 대문자로 변환하고 email 필드의 값을 소문자로 변환하는 전처리 작업을 수행하고 있습니다.

애플리케이션의 라우트 함수에서는 form.validate_on_submit() 메서드를 사용하여 폼이 유효한지 검사한 후, 처리 로직을 수행하고 있습니다.

이렇게 Flask-WTF를 사용하여 폼 데이터의 전처리 작업을 수행할 수 있습니다.