[python] Flask-WTF에서 폼 요소들을 그룹화하여 묶어 표현하는 방법은 어떻게 되나요?
Flask-WTF는 Flask 기반의 웹 애플리케이션에서 폼을 쉽게 처리할 수 있도록 도와주는 확장 모듈입니다. 폼 요소들을 그룹화하여 묶어 표현하는 방법은 아래와 같이 할 수 있습니다.
- WTForms 라이브러리에서 필드 그룹을 나타내는
FieldList
와FormField
클래스를 import합니다.from wtforms import FieldList, FormField
- 폼을 정의할 클래스를 생성합니다. 이때, 필드 그룹을 나타낼 클래스도 정의해야 합니다. ```python from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired
class GroupedForm(FlaskForm): name = StringField(‘Name’, validators=[DataRequired()])
class MainForm(FlaskForm): groups = FieldList(FormField(GroupedForm), min_entries=1)
3. Flask 뷰 함수에서 `MainForm` 인스턴스를 생성하고 렌더링합니다.
```python
from flask import Flask, render_template
from forms import MainForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/')
def index():
form = MainForm()
return render_template('index.html', form=form)
- HTML 템플릿에서
MainForm
의 필드 그룹을 반복문으로 처리합니다. ```html
```
위의 예시 코드에서 MainForm
클래스는 groups
라는 FieldList
필드를 가지고 있습니다. 이 필드는 GroupedForm
클래스를 사용하여 각 그룹을 나타냅니다. FormField
클래스는 다른 폼을 내장하고 있기 때문에 필드 그룹을 쉽게 표현할 수 있도록 도와줍니다.
폼을 렌더링할 때에는 필드 그룹을 반복문으로 처리하여 label
과 해당 필드의 렌더링을 할 수 있습니다.
참고로, 이 예시는 Flask-WTF를 사용한 방법이며, Flask-WTF를 사용하지 않는 경우에는 간단한 HTML과 JavaScript를 사용해 필드 그룹을 처리해야 할 수도 있습니다.