Flask-WTF는 Flask 웹 프레임워크와 함께 사용되는 WTForms의 확장입니다. Flask-WTF를 사용하여 사용자가 입력한 값에 대한 서버 측 검증을 간편하게 수행할 수 있습니다.
먼저, Flask-WTF를 설치해야 합니다. 아래의 명령어를 사용하여 Flask-WTF를 설치할 수 있습니다.
pip install Flask-WTF
다음은 Flask-WTF를 사용하여 사용자가 입력한 값을 검증하는 간단한 예제입니다.
먼저, Flask-WTF의 Form
클래스를 상속받은 폼 클래스를 생성합니다. 이 폼 클래스에서 입력 필드와 해당 필드에 대한 유효성 검사 규칙을 정의합니다.
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Length
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired(), Length(min=2, max=20)])
email = StringField('Email', validators=[DataRequired(), Email()])
submit = SubmitField('Submit')
위의 예제에서는 name
필드와 email
필드를 정의하였습니다. validators
매개변수를 사용하여 입력 값에 대한 유효성 검사 규칙을 지정합니다. 여기서는 DataRequired
와 Length
벨리데이터를 사용하여 필드가 비어 있지 않고, 특정 길이 범위 내에 있는 지를 검증하였습니다.
이제 이 폼을 사용하여 사용자 입력을 검증하는 뷰 함수를 만들어보겠습니다.
from flask import Flask, render_template, flash, redirect, url_for
from forms import MyForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
flash('입력이 유효합니다!', 'success')
return redirect(url_for('index'))
return render_template('index.html', form=form)
위의 예제에서는 validate_on_submit
메서드를 사용하여 사용자 입력이 유효한 경우에만 ‘입력이 유효합니다!’라는 화면에 플래시 메세지를 표시하고, 그렇지 않은 경우에는 현재 페이지를 유지합니다.
위의 예제에서 render_template
함수를 사용하여 index.html
템플릿을 렌더링하기 위해 index
뷰 함수를 수정해야합니다.
마지막으로, index.html
템플릿 파일에서 폼을 렌더링해보겠습니다.
<!DOCTYPE html>
<html>
<head>
<title>Flask-WTF Example</title>
</head>
<body>
<h1>입력 폼 예제</h1>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<form method="POST" action="/">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=40) }}
{{ form.email.label }} {{ form.email(size=40) }}
{{ form.submit() }}
</form>
</body>
</html>
위의 예제에서는 get_flashed_messages
함수를 사용하여 플래시 메세지를 렌더링하고, form.csrf_token
필드를 사용하여 CSRF 공격으로부터 보호합니다.
이렇게 Flask-WTF를 사용하여 사용자가 입력한 값에 대한 서버 측 검증을 수행할 수 있습니다. Flask-WTF를 사용하면 복잡한 검증 규칙을 정의하고, 유효성 검사를 통과하지 못한 경우 쉽게 오류 메세지를 표시할 수 있는 장점이 있습니다.
Flask-WTF에 대한 더 자세한 정보는 공식 문서를 참조하시기 바랍니다.
- Flask-WTF 공식 문서: http://flask-wtf.readthedocs.io/
- WTForms 공식 문서: https://wtforms.readthedocs.io/