Flask-WTF는 WTForms 라이브러리를 Flask와 통합하여 사용자로부터 데이터를 입력받는 웹 폼을 쉽게 만들고 검증할 수 있도록 해줍니다. 바로 Flask-wtf를 설치해 보고 기본적인 사용방법을 알려드리겠습니다.
1. Flask-WTF 설치
먼저 Flask-WTF 패키지를 설치해야 합니다. 가상 환경에서 작업하는 것이 좋습니다. 아래 명령을 사용하여 Flask-WTF를 설치하면 됩니다.
# venv activate 하여 pip 수행
pip install Flask-WTF
2. Flask 애플리케이션 설정
Flask-WTF를 사용하려면 Flask 애플리케이션을 설정해야 합니다. Flask 애플리케이션 객체를 생성한 후에 아래 같이 Flask-WTF를 초기화해주세요. CSRF protect는 웹 스크립트 해킹을 막기 위해서 사용합니다.
from flask import Flask
from flask_wtf import CSRFProtect
app = Flask(__name__)
# Flask-WTF 설정
app.config['SECRET_KEY'] = 'make a secret key' # 암호화 키 설정
csrf = CSRFProtect(app)
다른 방법으로는 HTML안에서 form.csrf_token 변수를 사용할 수 있습니다.
3. 폼 클래스 생성
웹 폼을 만들려면 WTForms를 사용하여 폼 클래스를 정의해야 합니다. 예를 들어, 사용자로부터 이름과 이메일을 입력받는 폼을 만들어보겠습니다.
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired, Email
class MyForm(FlaskForm):
name = StringField('이름', validators=[DataRequired()])
email = StringField('이메일', validators=[DataRequired(), Email()])
4. 라우트 및 폼 표시
폼을 사용하려면 라우트 함수에서 폼을 생성하고 템플릿에 적용해야 합니다. 예를 들어, 폼을 생성하고 웹 페이지에 render_template함수를 써서 Flask 라우트 함수를 만들어보겠습니다.
from flask import render_template
@app.route('/my_form', methods=['GET', 'POST'])
def my_form():
form = MyForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
# 폼 데이터를 처리하거나 저장하는 로직을 추가
return render_template('my_form.html', form=form)
5. HTML 템플릿 생성
템플릿에서 폼을 표시하고 사용자로부터 데이터를 입력받도록 설정해야 합니다. HTML 템플릿에서 WTForms를 사용하려면 다음과 같이 폼 필드를 렌더링 할 수 있습니다.
<form method="POST">
{{ form.hidden_tag() }}
<div class="form-group">
{{ form.name.label }}
{{ form.name(size=32) }}
</div>
<div class="form-group">
{{ form.email.label }}
{{ form.email(size=32) }}
</div>
<button type="submit">생성하기</button>
</form>
Flask-WTF를 사용하여 웹 폼을 생성하고 데이터를 처리하는 방법을 알아보았습니다. 이 패키지를 사용하면 데이터 유효성 검사 및 웹 폼 생성 작업이 간단해지며, Flask 애플리케이션을 빠르게 개발할 수 있습니다.