[python] Flask-WTF에서 입력 양식을 여러 페이지로 나누는 방법은 무엇인가요?

Flask-WTF는 Flask의 라이브러리로서, 웹 어플리케이션에서 입력 양식을 쉽게 처리할 수 있도록 도와줍니다. Flask-WTF를 사용하여 입력 양식을 여러 페이지로 나눈다면, 사용자가 많은 정보를 입력해야 할 때 유용하게 이용할 수 있습니다.

Flask-WTF에서 입력 양식을 여러 페이지로 나누려면, 다음과 같은 절차를 따를 수 있습니다:

  1. Flask-WTF의 FlaskForm을 상속받는 입력 양식 클래스를 만듭니다. 이 양식 클래스에는 여러 페이지에 걸쳐 입력해야 하는 필드들을 포함시킬 수 있습니다. ```python from wtforms import StringField, SubmitField from flask_wtf import FlaskForm

class MultiPageForm(FlaskForm): page1_field = StringField(‘Page 1 Field’) page2_field = StringField(‘Page 2 Field’) page3_field = StringField(‘Page 3 Field’) submit = SubmitField(‘Submit’)


2. Flask 앱에서 여러 페이지로 나누어진 입력 양식을 처리할 라우트들을 추가합니다. 각 페이지의 입력 양식에 대해 각기 다른 라우트를 설정할 수 있습니다.
```python
from flask import Flask, render_template, redirect, url_for
from flask_wtf import CSRFProtect

app = Flask(__name__)
csrf = CSRFProtect(app)
app.config['SECRET_KEY'] = 'your_secret_key'  # 보안을 위해 비밀 키를 설정해줍니다.

@app.route('/page1', methods=['GET', 'POST'])
def page1():
    form = MultiPageForm()
    if form.validate_on_submit():
        return redirect(url_for('page2'))
    return render_template('page1.html', form=form)

@app.route('/page2', methods=['GET', 'POST'])
def page2():
    form = MultiPageForm()
    if form.validate_on_submit():
        return redirect(url_for('page3'))
    return render_template('page2.html', form=form)

@app.route('/page3', methods=['GET', 'POST'])
def page3():
    form = MultiPageForm()
    if form.validate_on_submit():
        # 모든 페이지의 입력을 처리한 후의 로직을 작성합니다.
        return '입력이 완료되었습니다!'
    return render_template('page3.html', form=form)
  1. 각 페이지에 해당하는 HTML 템플릿 파일을 작성합니다. 이 템플릿 파일에는 Flask-WTF에서 자동 생성되는 필드와 submit 버튼을 포함시킬 수 있습니다. ```html
{{ form.csrf_token }} {{ form.page1_field.label }} {{ form.page1_field }} {{ form.submit }}
```html

<!-- page2.html -->
<form method="POST">
    {{ form.csrf_token }}
    {{ form.page2_field.label }}
    {{ form.page2_field }}
    {{ form.submit }}
</form>


<!-- page3.html -->
<form method="POST">
    {{ form.csrf_token }}
    {{ form.page3_field.label }}
    {{ form.page3_field }}
    {{ form.submit }}
</form>

이렇게 Flask-WTF를 사용하여 입력 양식을 여러 페이지로 나눌 수 있습니다. 각 페이지에서는 사용자가 입력한 정보를 임시적으로 저장하고, 최종 페이지에서는 모든 페이지의 입력을 처리하는 로직을 작성할 수 있습니다. 이를 통해 사용자 친화적인 입력 프로세스를 구현할 수 있습니다.

Flask-WTF의 자세한 사용법은 공식 문서를 참고하시기 바랍니다. Flask-WTF 문서