[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의 자세한 사용법은 공식 문서를 참고하시기 바랍니다.
참고문서: