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

Flask-WTF는 Flask 프레임워크를 위한 폼 유효성 검사 도구입니다. 폼 데이터를 데이터베이스에 저장하기 전에 데이터 유효성을 검사하는 것은 중요합니다. 이를 위해서, Flask-WTF에서 제공하는 validate_on_submit 함수를 사용할 수 있습니다.

먼저, Flask-WTF를 설치해야 합니다. 다음 명령을 사용하여 Flask-WTF를 설치합니다:

pip install Flask-WTF

다음으로, Flask-WTF를 사용하여 데이터 유효성 검사를 수행하는 예제를 살펴보겠습니다. 아래의 코드는 Flask-WTF를 사용하여 사용자 이름과 이메일 주소를 입력받아 데이터베이스에 저장하는 예제입니다.

from flask import Flask, render_template, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Email
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'your-database-uri'

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)

class UserForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = UserForm()
    if form.validate_on_submit():
        username = form.username.data
        email = form.email.data
        user = User(username=username, email=email)
        db.session.add(user)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('index.html', form=form)

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

위의 코드에서는 먼저 Flask와 Flask-WTF를 import하고, db와 User 모델을 정의합니다. UserForm 클래스는 폼을 정의하는데, username과 email 필드가 있으며 각각 DataRequiredEmail validator를 사용하여 유효성을 검사합니다.

인덱스 라우트에서는 form 객체를 생성하고 validate_on_submit 함수를 사용하여 유효성을 검사합니다. 유효한 데이터인 경우 User 객체를 생성하고 데이터베이스에 추가한 후 인덱스 페이지로 리다이렉션합니다.

템플릿 파일 “index.html”은 폼을 렌더링하고 데이터를 입력할 수 있는 입력 필드를 제공합니다.

이 예제를 실행하기 전에, your-secret-key를 실제로 사용할 암호화 키로 대체하고 your-database-uri를 실제 데이터베이스의 URI로 대체해야 합니다.

위의 코드를 실행하면 Flask-WTF를 사용하여 폼 데이터를 데이터베이스에 저장하면서 유효성을 검사할 수 있습니다.

Flask-WTF에 대한 더 자세한 정보는 다음 링크를 참조하세요: