Flask-WTF는 Flask 프레임워크에서 웹 폼을 처리하기 위한 확장 모듈입니다. 이를 통해 웹 애플리케이션에서 사용자로부터 입력된 데이터를 쉽게 처리할 수 있습니다.
먼저, Flask-WTF 모듈을 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:
pip install Flask-WTF
Flask-WTF를 사용하여 웹 폼 데이터를 처리하는 과정은 다음과 같습니다:
- Flask-WTF의
FlaskForm
클래스를 상속받아 폼을 생성합니다.
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class MyForm(FlaskForm):
name = StringField('이름', validators=[DataRequired()])
submit = SubmitField('제출')
- 폼을 HTML 템플릿에 렌더링합니다.
from flask import Flask, render_template
from flask_wtf import FlaskForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
name = form.name.data
# 처리할 로직 작성
return f'안녕하세요, {name}님!'
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run()
- 폼을 HTML 템플릿에서 사용합니다.
<!-- index.html -->
<form method="POST" action="{{ url_for('index') }}">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name }}
{{ form.submit }}
</form>
위의 예제에서는 FlaskForm
클래스를 상속하여 MyForm
을 생성하고, 폼 필드로 StringField
와 SubmitField
를 사용했습니다. StringField
는 텍스트 입력 필드를 생성하고, SubmitField
는 제출 버튼을 생성합니다.
MyForm
에서는 name
필드에 DataRequired()
밸리데이터를 추가하여 유효성 검사를 수행합니다. 만약 데이터가 없을 경우 유효성 검사가 실패하고 에러 메시지가 표시됩니다.
index()
뷰 함수에서는 MyForm
인스턴스를 생성하고, 폼이 제출되었을 때 데이터를 처리하는 로직을 작성합니다. form.validate_on_submit()
메서드를 사용하면 폼이 제출되었을 경우에만 True를 반환합니다.
마지막으로, HTML 템플릿에서 form
객체를 사용하여 필드와 제출 버튼을 렌더링합니다. form.csrf_token
은 CSRF 토큰을 생성하기 위한 필수 필드이며, form.label
과 form.name
은 필드의 레이블과 입력 필드를 렌더링합니다.
이제 Flask-WTF를 사용하여 웹 폼 데이터를 처리하는 방법에 대해 알게 되었습니다. Flask-WTF를 활용하면 손쉽게 웹 애플리케이션에서 사용자로부터 입력된 데이터를 처리할 수 있습니다.
더 자세한 내용은 Flask-WTF 공식 문서(https://flask-wtf.readthedocs.io/)를 참고하시기 바랍니다.