Flask-WTF는 Flask 프레임워크에서 사용되는 WTForms와의 통합을 제공하는 확장입니다. 사용자로부터 입력을 받는 웹 폼을 만들고, 이 입력 값을 저장하고 기록하는 방법에 대해서 알아보겠습니다.
먼저, Flask-WTF를 설치해야 합니다. 터미널에서 아래의 명령을 실행하여 Flask-WTF를 설치할 수 있습니다:
pip install Flask-WTF
다음으로, Flask-WTF에서 제공하는 FlaskForm
클래스를 상속받아 사용자 정의 폼 클래스를 작성합니다. 이 폼 클래스에는 사용자로부터 입력 받을 필드들을 추가하고, 이들 필드의 값을 저장하는 로직을 구현할 수 있습니다.
예를 들어, 사용자로부터 이름과 이메일을 입력받는 폼을 만들고, 입력 받은 값을 데이터베이스에 저장하고 기록하는 로직을 작성해보겠습니다.
from flask import Flask, render_template, redirect
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'] = 'your_database_uri'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(100), nullable=False)
class UserForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
form = UserForm()
if form.validate_on_submit():
user = User(name=form.name.data, email=form.email.data)
db.session.add(user)
db.session.commit()
return redirect('/success')
return render_template('index.html', form=form)
@app.route('/success')
def success():
users = User.query.all()
return render_template('success.html', users=users)
if __name__ == '__main__':
app.run()
위의 코드에서는 FlaskForm
을 상속받아 UserForm
클래스를 작성하고, name
과 email
필드를 추가했습니다. 그리고 폼이 제출되면 index
함수에서 User
모델에 새로운 사용자를 추가하고, 데이터베이스에 반영한 뒤 /success
경로로 리다이렉트합니다. /success
경로에서는 데이터베이스의 모든 사용자를 조회하여 success.html
템플릿에 표시합니다.
위의 코드에서 your_secret_key
와 your_database_uri
를 실제로 사용하는 키와 URI로 변경해 주어야 합니다.
이와 같은 방식으로 Flask-WTF를 사용하여 사용자로부터 입력 값을 저장하고 기록할 수 있습니다. 추가적인 필드나 로직을 구현하려면 Flask-WTF와 SQLAlchemy의 문서를 참고하시면 도움이 될 것입니다.
참고 자료:
- Flask-WTF 공식 문서: Flask-WTF Documentation
- WTForms 공식 문서: WTForms Documentation
- Flask 공식 문서: Flask Documentation
- SQLAlchemy 공식 문서: SQLAlchemy Documentation