[python] Flask의 폼 처리 기능

Flask는 웹 애플리케이션을 빠르게 개발할 수 있는 경량 프레임워크입니다. Flask를 사용하면 폼 데이터를 쉽게 처리할 수 있습니다. 이번 블로그에서는 Flask 애플리케이션에서 폼을 만들고 제출하는 방법을 다루겠습니다.

폼 생성하기

Flask에서는 Werkzeug라는 라이브러리를 사용하여 폼을 다룹니다. 폼을 생성하려면 먼저 FlaskForm 클래스를 상속받아 새로운 폼 클래스를 만들어야 합니다.

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class MyForm(FlaskForm):
    name = StringField('이름', validators=[DataRequired()])
    email = StringField('이메일', validators=[DataRequired()])
    submit = SubmitField('제출')

위 예제에서 MyForm 클래스는 이름과 이메일 속성을 가지고 있으며, 이름과 이메일 필드에 대한 유효성 검사를 하도록 설정되어 있습니다.

폼 렌더링하기

폼을 HTML로 렌더링하려면 애플리케이션 템플릿에서 폼을 불러와야 합니다. 예를 들어, 아래와 같이 템플릿 파일을 작성할 수 있습니다.


<form method="POST" action="{{ url_for('submit_form') }}">
    {{ form.hidden_tag() }}
    <p>{{ form.name.label }} - {{ form.name(size=32) }}</p>
    <p>{{ form.email.label }} - {{ form.email(size=32) }}</p>
    <p>{{ form.submit() }}</p>
</form>

위 템플릿에서 form.hidden_tag()는 CSRF 토큰을 생성하기 위한 코드이며, 이를 사용하여 보안 문제를 방지할 수 있습니다.

폼 제출 처리하기

폼을 제출하는 것은 웹 애플리케이션의 백엔드 로직으로 데이터를 저장하거나 처리하는 것을 의미합니다. 아래는 폼을 제출하는 뷰 함수의 예시입니다.

from flask import render_template, redirect, url_for

@app.route('/submit', methods=['GET', 'POST'])
def submit_form():
    form = MyForm()
    if form.validate_on_submit():
        # 폼 데이터를 처리하는 코드
        return redirect(url_for('success'))
    return render_template('form.html', form=form)

위 코드에서 form.validate_on_submit()는 제출된 폼의 데이터가 유효한지를 검사하며, 데이터가 유효하다면 폼 데이터를 처리하고 성공 페이지로 리다이렉트 합니다.

결론

Flask를 사용하면 간단히 폼 데이터를 처리할 수 있습니다. 이를 통해 사용자로부터의 입력을 받고 처리하는 웹 애플리케이션을 쉽게 개발할 수 있습니다. Flask 폼 처리 기능을 사용하여 웹 애플리케이션을 보다 유연하고 사용자 친화적으로 만들어보세요.

참고: Flask 공식 문서