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 필드가 있으며 각각 DataRequired
와 Email
validator를 사용하여 유효성을 검사합니다.
인덱스 라우트에서는 form 객체를 생성하고 validate_on_submit
함수를 사용하여 유효성을 검사합니다. 유효한 데이터인 경우 User 객체를 생성하고 데이터베이스에 추가한 후 인덱스 페이지로 리다이렉션합니다.
템플릿 파일 “index.html”은 폼을 렌더링하고 데이터를 입력할 수 있는 입력 필드를 제공합니다.
이 예제를 실행하기 전에, your-secret-key
를 실제로 사용할 암호화 키로 대체하고 your-database-uri
를 실제 데이터베이스의 URI로 대체해야 합니다.
위의 코드를 실행하면 Flask-WTF를 사용하여 폼 데이터를 데이터베이스에 저장하면서 유효성을 검사할 수 있습니다.
Flask-WTF에 대한 더 자세한 정보는 다음 링크를 참조하세요:
- Flask-WTF 공식 문서: https://flask-wtf.readthedocs.io/en/stable/
- WTForms 공식 문서: https://wtforms.readthedocs.io/en/stable/
- Flask 공식 문서: https://flask.palletsprojects.com/