Flask-WTF는 Flask 웹 애플리케이션에서 폼을 처리하기 위한 확장팩입니다. 폼 필드에 입력된 값의 형식을 검사하는 방법을 알아보겠습니다.
- 필드 타입 지정하기
폼 필드를 정의할 때 필드의 타입을 지정할 수 있습니다. 예를 들어, 문자열 필드는
StringField
, 정수형 필드는IntegerField
와 같이 타입을 지정할 수 있습니다. 이렇게 지정한 타입은 해당 필드에 입력된 값의 형식을 검사하는 데 사용됩니다.
from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField
from wtforms.validators import DataRequired, NumberRange
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
age = IntegerField('Age', validators=[NumberRange(min=0, max=100)])
-
검사기(Validator) 사용하기 검사기는
wtforms.validators
모듈에서 제공되며, 입력된 값의 형식을 검사하기 위해 사용됩니다. 검사기는 필드의validators
인수에 추가하여 사용할 수 있습니다. Flask-WTF에서 기본적으로 제공되는 검사기 외에도 필요에 따라 커스텀 검사기를 만들어 사용할 수도 있습니다.예를 들어, 위의 코드에서
name
필드에는DataRequired
검사기를,age
필드에는NumberRange
검사기를 사용하여 값의 형식을 검사하고 있습니다.DataRequired
는 값이 비어있는지 검사하고,NumberRange
는 값이 지정한 범위 안에 있는지 검사합니다. -
폼 검증하기 Flask-WTF에서 제공하는
validate_on_submit
메서드를 사용하여 폼을 검증할 수 있습니다. 이 메서드는 폼이 제출되었을 때 호출되며, 폼 필드에 지정된 검사기를 사용하여 입력된 값의 형식을 검사합니다.예를 들어, 다음과 같이 폼이 제출되었을 때 폼을 검증하고, 검증에 성공할 경우 폼 데이터를 처리하는 로직을 작성할 수 있습니다.
from flask import Flask, render_template, request, flash
from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField
from wtforms.validators import DataRequired, NumberRange
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
age = IntegerField('Age', validators=[NumberRange(min=0, max=100)])
@app.route('/', methods=['GET', 'POST'])
def form_handler():
form = MyForm()
if form.validate_on_submit():
name = form.name.data
age = form.age.data
# 폼 데이터 처리 로직 작성
flash('폼 데이터가 성공적으로 처리되었습니다.')
return render_template('form.html', form=form)
if __name__ == '__main__':
app.run()
위의 예제 코드에서는 Flask 애플리케이션을 구현하고, MyForm
클래스를 폼으로 사용하고 있습니다. form_handler
함수에서는 폼이 제출되었을 때 폼을 검증하고 폼 데이터를 처리하는 로직을 작성하도록 하고 있습니다. form.validate_on_submit()
을 사용하여 폼을 검증하고 성공했을 경우 flash
함수를 사용하여 메시지를 표시하고 있습니다.
이렇게 Flask-WTF를 사용하여 폼 필드에 입력된 값의 형식을 검사할 수 있습니다. Flask-WTF에는 다양한 검사기가 제공되므로 필요에 따라 적절한 검사기를 선택하여 사용할 수 있습니다.
더 자세한 내용은 Flask-WTF 공식 문서를 참고하시기 바랍니다. Flask-WTF 공식 문서