[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를 사용하여 폼 데이터의 전처리 작업을 수행할 수 있습니다.