[python] Flask-WTF에서 폼 데이터를 데이터베이스에 저장할 때 유효성 검사를 어떻게 할 수 있나요?

Flask-WTF는 Flask를 위한 강력한 폼 처리 확장기능입니다. 이를 사용하여 폼 데이터를 데이터베이스에 저장할 때, 유효성 검사를 손쉽게 수행할 수 있습니다. Flask-WTF는 WTForms라는 폼 라이브러리를 기반으로 동작하기 때문에, WTForms의 유효성 검사 메서드를 사용할 수 있습니다.

먼저, Flask-WTF를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다:

pip install flask-wtf

다음으로, Flask-WTF를 사용하여 폼을 정의해야 합니다. 예를 들어, 사용자의 이름과 이메일을 입력받는 폼을 만들어보겠습니다:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Email

class UserForm(FlaskForm):
    name = StringField('이름', validators=[DataRequired()])
    email = StringField('이메일', validators=[DataRequired(), Email()])
    submit = SubmitField('저장')

위 코드에서 StringField는 문자열 입력 필드를, SubmitField는 제출 버튼을 나타냅니다. 이때, validators 매개변수를 사용하여 필드에 적용할 유효성 검사 메서드를 지정할 수 있습니다.

폼을 정의한 후에는, 뷰 함수에서 해당 폼을 사용하여 데이터를 처리할 수 있습니다. 아래는 예시입니다:

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

@app.route('/', methods=['GET', 'POST'])
def index():
    form = UserForm()
    if form.validate_on_submit():
        name = form.name.data
        email = form.email.data
        user = User(name=name, email=email)
        db.session.add(user)
        db.session.commit()
        return '데이터가 성공적으로 저장되었습니다!'
    return render_template('index.html', form=form)

위 코드에서 form.validate_on_submit() 메서드를 사용하여 폼 데이터의 유효성을 검사합니다. 폼이 제출되면, 폼 데이터를 데이터베이스에 저장하고 ‘데이터가 성공적으로 저장되었습니다!’라는 메시지를 반환합니다. 유효성 검사가 실패하면, 폼에 에러 메시지가 표시됩니다.

이처럼, Flask-WTF를 사용하여 폼 데이터를 데이터베이스에 저장할 때 유효성 검사를 수행할 수 있습니다. Flask-WTF와 WTForms의 자세한 사용법은 공식 문서를 참고하시기 바랍니다.

참고문서: