[python] Flask-WTF를 사용하여 웹 폼 데이터를 어떻게 처리할 수 있을까요?

Flask-WTF는 Flask 프레임워크에서 웹 폼을 처리하기 위한 확장 모듈입니다. 이를 통해 웹 애플리케이션에서 사용자로부터 입력된 데이터를 쉽게 처리할 수 있습니다.

먼저, Flask-WTF 모듈을 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install Flask-WTF

Flask-WTF를 사용하여 웹 폼 데이터를 처리하는 과정은 다음과 같습니다:

  1. 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('제출')
  1. 폼을 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()
  1. 폼을 HTML 템플릿에서 사용합니다.

<!-- index.html -->
<form method="POST" action="{{ url_for('index') }}">
    {{ form.csrf_token }}
    {{ form.name.label }} {{ form.name }}
    {{ form.submit }}
</form>

위의 예제에서는 FlaskForm 클래스를 상속하여 MyForm을 생성하고, 폼 필드로 StringFieldSubmitField를 사용했습니다. StringField는 텍스트 입력 필드를 생성하고, SubmitField는 제출 버튼을 생성합니다.

MyForm에서는 name 필드에 DataRequired() 밸리데이터를 추가하여 유효성 검사를 수행합니다. 만약 데이터가 없을 경우 유효성 검사가 실패하고 에러 메시지가 표시됩니다.

index() 뷰 함수에서는 MyForm 인스턴스를 생성하고, 폼이 제출되었을 때 데이터를 처리하는 로직을 작성합니다. form.validate_on_submit() 메서드를 사용하면 폼이 제출되었을 경우에만 True를 반환합니다.

마지막으로, HTML 템플릿에서 form 객체를 사용하여 필드와 제출 버튼을 렌더링합니다. form.csrf_token은 CSRF 토큰을 생성하기 위한 필수 필드이며, form.labelform.name은 필드의 레이블과 입력 필드를 렌더링합니다.

이제 Flask-WTF를 사용하여 웹 폼 데이터를 처리하는 방법에 대해 알게 되었습니다. Flask-WTF를 활용하면 손쉽게 웹 애플리케이션에서 사용자로부터 입력된 데이터를 처리할 수 있습니다.

더 자세한 내용은 Flask-WTF 공식 문서(https://flask-wtf.readthedocs.io/)를 참고하시기 바랍니다.