[python] Flask-WTF에서 폼 필드에 입력된 값의 형식을 검사하는 방법은 어떻게 되나요?

Flask-WTF는 Flask 웹 애플리케이션에서 폼을 처리하기 위한 확장팩입니다. 폼 필드에 입력된 값의 형식을 검사하는 방법을 알아보겠습니다.

  1. 필드 타입 지정하기 폼 필드를 정의할 때 필드의 타입을 지정할 수 있습니다. 예를 들어, 문자열 필드는 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)])
  1. 검사기(Validator) 사용하기 검사기는 wtforms.validators 모듈에서 제공되며, 입력된 값의 형식을 검사하기 위해 사용됩니다. 검사기는 필드의 validators 인수에 추가하여 사용할 수 있습니다. Flask-WTF에서 기본적으로 제공되는 검사기 외에도 필요에 따라 커스텀 검사기를 만들어 사용할 수도 있습니다.

    예를 들어, 위의 코드에서 name 필드에는 DataRequired 검사기를, age 필드에는 NumberRange 검사기를 사용하여 값의 형식을 검사하고 있습니다. DataRequired는 값이 비어있는지 검사하고, NumberRange는 값이 지정한 범위 안에 있는지 검사합니다.

  2. 폼 검증하기 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 공식 문서