[python] Flask-WTF에서 폼 요소들을 그룹화하여 묶어 표현하는 방법은 어떻게 되나요?

Flask-WTF는 Flask 기반의 웹 애플리케이션에서 폼을 쉽게 처리할 수 있도록 도와주는 확장 모듈입니다. 폼 요소들을 그룹화하여 묶어 표현하는 방법은 아래와 같이 할 수 있습니다.

  1. WTForms 라이브러리에서 필드 그룹을 나타내는 FieldListFormField 클래스를 import합니다.
    from wtforms import FieldList, FormField
    
  2. 폼을 정의할 클래스를 생성합니다. 이때, 필드 그룹을 나타낼 클래스도 정의해야 합니다. ```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)
  1. HTML 템플릿에서 MainForm의 필드 그룹을 반복문으로 처리합니다. ```html
{{ form.hidden_tag() }} {% for group in form.groups %} {{ group.name.label }}: {{ group.name() }} {% endfor %}

```

위의 예시 코드에서 MainForm 클래스는 groups라는 FieldList 필드를 가지고 있습니다. 이 필드는 GroupedForm 클래스를 사용하여 각 그룹을 나타냅니다. FormField 클래스는 다른 폼을 내장하고 있기 때문에 필드 그룹을 쉽게 표현할 수 있도록 도와줍니다.

폼을 렌더링할 때에는 필드 그룹을 반복문으로 처리하여 label과 해당 필드의 렌더링을 할 수 있습니다.

참고로, 이 예시는 Flask-WTF를 사용한 방법이며, Flask-WTF를 사용하지 않는 경우에는 간단한 HTML과 JavaScript를 사용해 필드 그룹을 처리해야 할 수도 있습니다.