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

Flask-WTF는 Flask 프레임워크와 함께 사용되는 폼 유효성 검사를 지원하는 확장기능입니다. 폼 필드에 입력된 값의 형식을 검사하려면 Flask-WTF의 wtforms 패키지를 사용해야 합니다.

먼저, 필요한 패키지를 설치해야 합니다. 터미널에서 다음 명령을 입력하여 필요한 패키지를 설치합니다:

pip install flask-wtf

다음은 Flask-WTF를 사용하여 폼 필드의 값을 검사하는 예제 코드입니다.

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import Length, Email

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

class MyForm(FlaskForm):
    name = StringField('Name', validators=[Length(min=2, max=20)])
    email = StringField('Email', validators=[Email()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # 폼이 제출되었을 때 처리할 로직
        name = form.name.data
        email = form.email.data
        # 추가적인 검증이나 처리를 수행합니다.
        # 예: 데이터베이스에 저장, 이메일 발송 등
        return f'Hello {name}, your email is {email}'

    return render_template('index.html', form=form)

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

위의 예제에서는 StringField를 사용하여 폼 필드를 정의하고, validators 매개변수를 통해 해당 필드의 값에 대한 유효성 검사를 설정합니다. 예를 들어 Length(min=2, max=20)로 설정하면 이름 필드의 값은 최소 2자에서 최대 20자로 제한됩니다. Email()은 이메일 형식에 맞는지를 검사합니다.

MyForm 클래스는 FlaskForm을 상속받아 정의되며, 이 클래스의 객체를 생성하여 폼 인스턴스를 만듭니다. 이후 form.validate_on_submit()을 통해 폼이 제출되었을 때 유효성 검사를 수행하고, 검사에 통과하면 폼 필드에서 입력된 값을 가져와 로직을 처리할 수 있습니다.

위의 코드를 실행하면 Flask 애플리케이션이 시작되고, index.html 템플릿을 렌더링하여 폼을 표시합니다. 사용자가 폼을 작성하고 제출하면 입력된 값이 서버로 전송되어 유효성 검사가 수행됩니다. 유효성 검사에 통과하면 처리 로직이 실행되고, 결과가 화면에 나타납니다.

Flask-WTF를 사용하면 폼 필드의 유효성 검사를 간편하게 할 수 있으며, 필요에 따라 추가적인 사용자 정의 검사를 구현할 수도 있습니다. Flask-WTF의 자세한 사용 방법은 공식 문서를 참조하시기 바랍니다. Flask-WTF 공식 문서

위의 예제 코드에서는 render_template 함수를 사용하여 index.html 템플릿을 렌더링하도록 구현되어 있습니다. 템플릿 파일은 templates 폴더에 저장되어야 합니다.

위의 코드는 Flask-WTF의 기본적인 사용법을 보여주는 예제입니다. 실제 프로젝트에서는 더 복잡한 유효성 검사 규칙이 필요할 수 있으므로, 상황에 맞게 유효성 검사를 추가하고 처리 로직을 구현하시기 바랍니다.