[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’으로 변경된 후에 인사 메시지가 출력됩니다.
참고 문서: