Flask와 폼 처리 기법: 폼 유효성 검사 및 사용자 입력 처리
Flask는 가벼운 웹 프레임워크로, 간단한 웹 애플리케이션에서부터 대규모 애플리케이션까지 다양한 용도로 사용할 수 있습니다. 오늘은 Flask에서 폼 유효성 검사 및 사용자 입력 처리를 다루는 방법을 알아보겠습니다. 예제와 함께 설명하니 따라 하며 실습해 보세요.
1. Flask-WTF를 활용한 폼 처리
Flask에서 폼 유효성 검사를 쉽게 처리하려면 Flask-WTF라는 확장을 사용하는 것이 좋습니다. Flask-WTF는 WTForms를 기반으로 하며, 폼 생성, 데이터 검증, CSRF 보호 등의 기능을 제공합니다.
설치
먼저 Flask와 Flask-WTF를 설치해야 합니다. 다음 명령어를 사용하세요:
pip install flask flask-wtf
2. 기본 폼 클래스 정의
폼 클래스 작성
Flask-WTF에서 폼을 작성하려면 FlaskForm
클래스를 상속받아야 합니다. 예를 들어, 사용자의 이름과 이메일을 입력받는 폼은 다음과 같이 정의할 수 있습니다:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Email
class UserForm(FlaskForm):
name = StringField('이름', validators=[DataRequired(message='이름을 입력해주세요.')])
email = StringField('이메일', validators=[DataRequired(), Email(message='유효한 이메일 주소를 입력해주세요.')])
submit = SubmitField('제출')
주요 컴포넌트 설명
- StringField: 텍스트 입력 필드를 나타냅니다.
- SubmitField: 제출 버튼을 나타냅니다.
- validators: 입력값의 유효성을 검사하는 데 사용됩니다.
3. Flask 애플리케이션 설정
Flask 애플리케이션 구성
Flask 애플리케이션을 설정하고, 위에서 작성한 폼을 활용하는 코드를 작성합니다:
from flask import Flask, render_template, request, flash
from user_form import UserForm # 위에서 작성한 폼 클래스가 들어있는 파일
app = Flask(__name__)
app.secret_key = 'your_secret_key' # CSRF 보호를 위한 시크릿 키 설정
@app.route('/', methods=['GET', 'POST'])
def index():
form = UserForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
flash(f'이름: {name}, 이메일: {email}이(가) 제출되었습니다.', 'success')
return render_template('success.html', name=name, email=email)
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
4. HTML 템플릿 작성
Flask는 Jinja2 템플릿 엔진을 사용하여 HTML을 렌더링합니다. 폼을 표시할 HTML 템플릿을 작성합니다.
templates/index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>폼 입력</title>
</head>
<body>
<h1>사용자 정보 입력</h1>
<form method="POST" action="">
{{ form.hidden_tag() }}
<p>
{{ form.name.label }}<br>
{{ form.name(size=32) }}<br>
{% for error in form.name.errors %}
<span style="color: red;">{{ error }}</span><br>
{% endfor %}
</p>
<p>
{{ form.email.label }}<br>
{{ form.email(size=32) }}<br>
{% for error in form.email.errors %}
<span style="color: red;">{{ error }}</span><br>
{% endfor %}
</p>
<p>{{ form.submit() }}</p>
</form>
</body>
</html>
templates/success.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>성공</title>
</head>
<body>
<h1>제출 성공</h1>
<p>이름: {{ name }}</p>
<p>이메일: {{ email }}</p>
</body>
</html>
5. 실행 및 테스트
애플리케이션을 실행하려면 다음 명령어를 사용합니다:
python app.py
브라우저에서 http://127.0.0.1:5000/
에 접속하여 폼을 테스트해 보세요. 유효하지 않은 데이터를 입력하면 에러 메시지가 표시되고, 올바른 데이터를 입력하면 성공 메시지가 표시됩니다.
6. 요약
Flask와 Flask-WTF를 사용하면 간단하면서도 강력한 폼 처리를 구현할 수 있습니다. 이번 글에서는 기본적인 폼 생성부터 유효성 검사, 사용자 입력 처리까지의 과정을 다뤘습니다. 이를 기반으로 다양한 폼을 만들어 보고, 필요에 따라 커스터마이징해 보세요.
'Python > Python Flask' 카테고리의 다른 글
Flask RESTful API 기본 개념 (0) | 2025.09.07 |
---|---|
Flask에서 폼 처리와 파일 업로드 기능 구현하기 (0) | 2025.09.06 |
Flask와 폼 처리 기법: Flask-WTF 사용하기 (0) | 2025.09.04 |
Flask 데이터베이스 마이그레이션 관리 (0) | 2025.09.03 |
Flask-SQLAlchemy 소개 및 사용법 (0) | 2025.09.02 |