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

먼저, Flask-WTF는 WTForms의 Flask 확장입니다. WTForms는 파이썬에서 폼을 쉽게 작성하고 유효성 검사를 수행하는 라이브러리입니다.

  1. 필요한 패키지 설치

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

pip install Flask-WTF WTForms
  1. 폼 작성

폼을 작성하기 위해 아래와 같이 코드를 작성합니다.

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

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    submit = SubmitField('Submit')

위 코드에서는 nameemail 필드를 가진 폼을 작성하였습니다. DataRequired 유효성 검사자를 사용하여 필수 항목임을 표시하였습니다.

  1. 뷰 함수 작성

뷰 함수에서는 폼을 생성하고 유효성 검사를 수행합니다. 아래와 같이 코드를 작성합니다.

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

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'  # 보안을 위한 시크릿 키

# 데이터베이스 설정
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///your-database-name.db'
db = SQLAlchemy(app)

class MyModel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(50), nullable=False)

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    submit = SubmitField('Submit')

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

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

위 코드에서는 SQLite 데이터베이스를 사용하며, MyModel 클래스는 데이터베이스의 테이블과 연결됩니다. 뷰 함수에서는 폼을 생성하고, 유효성 검사를 통과한 경우 데이터베이스에 새로운 데이터를 추가합니다.

위의 코드를 실행하면 Flask 애플리케이션이 시작되고, 브라우저에서 해당 앱을 열어 폼을 작성하여 데이터베이스에 저장할 수 있습니다.

이와 같은 방법으로 Flask-WTF를 사용하여 폼 데이터의 유효성을 검사하고 데이터베이스에 저장할 수 있습니다.