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

아래는 사용 예시입니다:

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

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'  # 애플리케이션의 시크릿 키 설정

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

    def pre_validate(self):
        if self.name.data == 'admin':
            self.name.data = 'Admin'
        super(MyForm, self).pre_validate()

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # 폼이 검증되었을 때 실행할 코드
        return f'Hello, {form.name.data}!'
    return render_template('index.html', form=form)

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

위의 예시에서는 폼 클래스 MyForm에서 pre_validate 함수를 오버라이딩하여 사용했습니다. 이 함수에서는 name 필드의 값이 ‘admin’인 경우에는 ‘Admin’으로 변경합니다. pre_validate 함수 안에서 super(MyForm, self).pre_validate()를 호출하여 원래의 유효성 검사를 계속 수행합니다.

위의 예시 코드를 실행하면 웹 페이지에서 사용자로부터 이름을 입력받고 submit 버튼을 클릭하면 폼이 제출되고 검증됩니다. 만약 입력된 이름이 ‘admin’이면 ‘Admin’으로 변경된 후에 인사 메시지가 출력됩니다.

참고 문서: