Python 字段列表只获取第一个元素中的数据

Python 字段列表只获取第一个元素中的数据,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我试图从使用Flask和WTForms动态生成的表单中获取数据。为此,我创建了一个列表,当用户打开链接时将填充该列表,但当我尝试从html获取数据时,我只从列表的第一个元素获取数据。 表格: 路线: @app.route('/detalii-scoala/<school>/<groups>/<classes>', methods=['GET','POST']) @login_required def school_details_page(school, gr

我试图从使用Flask和WTForms动态生成的表单中获取数据。为此,我创建了一个列表,当用户打开链接时将填充该列表,但当我尝试从html获取数据时,我只从列表的第一个元素获取数据。
表格:

路线:

@app.route('/detalii-scoala/<school>/<groups>/<classes>', methods=['GET','POST'])
@login_required
def school_details_page(school, groups, classes):
    groups = int(groups)
    classes = int(classes)
    details_form = Details_Form()
    details_form.classes.clear()
    details_form.preschool_groups.clear()

    school_db_item = db.session.query(School).join(User, User.id == School.psychologist_id).filter(User.id == current_user.id).filter(School.school==school).first()
    education_types = school_db_item.education_type.split(',')

    for _ in range(groups):
        details_form.appeend_group()
    for _ in range(classes):
        details_form.appeend_class(education_types)
    
    if details_form.continue_button.data and details_form.validate_on_submit():
        for preschool_details in details_form.preschool_groups:
            group = Group(name=preschool_details.group_name.data, number_of_pupils=preschool_details.group_size.data, school_id=school_db_item.id)      
            db.session.add(group)

        for class_details in details_form.classes:
            print(class_details.class_name.data)
            c = Classes(name=class_details.class_name.data, number_of_students=class_details.class_size.data, class_type=class_details.class_type.data, school_id=school_db_item.id)   
            db.session.add(c)

        db.session.commit()
        
        details_form.classes.clear()
        details_form.preschool_groups.clear()
        flash('Detaliile au fost inregistrate')
        return redirect(url_for('session_page'))

    return render_template('detalii-scoala.html', details_form=details_form)
@app.route('/detalii scoala//',方法=['GET','POST']))
@需要登录
def学校详细信息页面(学校、小组、班级):
组=int(组)
类=int(类)
明细表=明细表()
详细信息\u form.classes.clear()
详细信息\u表单.predure\u组.clear()
school\u db\u item=db.session.query(school).join(User,User.id==school.psycholister\u id).filter(User.id==current\u User.id).filter(school.school==school).first()
教育类型=学校数据库项目。教育类型。拆分(“,”)
对于范围内的(组):
详细信息\u表单.appeend\u组()
对于范围内的(类):
课程详情表(教育类型)
if details_form.continue_button.data and details_form.validate_on_submit():
对于详细信息表格中的学龄前儿童详细信息。学龄前儿童组:
组=组(名称=学前班详细信息。组名称。数据,学前班学生人数=学前班详细信息。组大小。数据,学校id=学校db项目id)
db.session.add(组)
对于详细信息表格类中的类详细信息:
打印(类详细信息.类名称.数据)
c=班级(姓名=班级详细信息。班级名称。数据,学生人数=班级详细信息。班级大小。数据,班级类型=班级详细信息。班级类型。数据,学校id=学校db项目id)
db.session.add(c)
db.session.commit()
详细信息\u form.classes.clear()
详细信息\u表单.predure\u组.clear()
闪光('Detalile au fost in registrate')
返回重定向(url_for('session_page'))
返回渲染模板('detalii-scoala.html',details\u form=details\u form)
html:


{{details_form.hidden_tag()}}
{详细信息中的学龄前儿童百分比\u form.predure\u groups%}

{{predure.group_name(class=“form control”)}}
{predure.group_name.errors%}中的错误为% [{{error}}] {%endfor%}

{{predure.group_size(class=“form control”)}}
{0.group_size.errors%中的错误为%0} [{{error}}] {%endfor%}

{%endfor%}
Denumire clasă eleviînscrişi号 西克卢 {详细信息中的类的百分比\u form.classes%} {{class.class\u name(class=“form control”)}}
{class.class_name.errors%} [{{error}}] {%endfor%}

{{class.class\u size(class=“form control”)}}
{class.class_size.errors%中的错误为% [{{error}}] {%endfor%}

{{class.class_type(class=“form control”)}}
{class.classu type.errors%}中的错误为% [{{error}}] {%endfor%}

{%endfor%} {{details\u form.continue\u按钮(class=“btn btn primary”)}


前端工作正常,唯一的问题是当我尝试将电子表单中的数据添加到数据库中时。

问题是HTML字段具有相同的名称。为了解决这个问题,我使用
request.form.getlist('name)
来创建列表

@app.route('/detalii-scoala/<school>/<groups>/<classes>', methods=['GET','POST'])
@login_required
def school_details_page(school, groups, classes):
    groups = int(groups)
    classes = int(classes)
    details_form = Details_Form()
    details_form.classes.clear()
    details_form.preschool_groups.clear()

    school_db_item = db.session.query(School).join(User, User.id == School.psychologist_id).filter(User.id == current_user.id).filter(School.school==school).first()
    education_types = school_db_item.education_type.split(',')

    for _ in range(groups):
        details_form.appeend_group()
    for _ in range(classes):
        details_form.appeend_class(education_types)
    
    if details_form.continue_button.data and details_form.validate_on_submit():
        for preschool_details in details_form.preschool_groups:
            group = Group(name=preschool_details.group_name.data, number_of_pupils=preschool_details.group_size.data, school_id=school_db_item.id)      
            db.session.add(group)

        for class_details in details_form.classes:
            print(class_details.class_name.data)
            c = Classes(name=class_details.class_name.data, number_of_students=class_details.class_size.data, class_type=class_details.class_type.data, school_id=school_db_item.id)   
            db.session.add(c)

        db.session.commit()
        
        details_form.classes.clear()
        details_form.preschool_groups.clear()
        flash('Detaliile au fost inregistrate')
        return redirect(url_for('session_page'))

    return render_template('detalii-scoala.html', details_form=details_form)
<form action="" method="post">
    {{ details_form.hidden_tag() }}
    <table>
        
        {% for preschool in details_form.preschool_groups %}
        <tr>
            <td><p>
                {{ preschool.group_name(class_="form-control") }}<br>
                {% for error in preschool.group_name.errors %}
                <span class="error">[{{ error }}]</span>
                {% endfor %}
            </p></td>
            <td><p>
                {{ preschool.group_size(class_="form-control") }}<br>
                {% for error in preschool.group_size.errors %}
                <span class="error">[{{ error }}]</span>
                {% endfor %}
            </p></td>
        </tr>
        {% endfor %}
    </table>
    <br>
    <table>
        <tr>
            <td>Denumire clasă</td>
            <td>Nr. elevi înscrişi</td>
            <td>Ciclul</td>
        </tr>
        {% for class in details_form.classes %}
        <tr>
            <td><p>
                {{ class.class_name(class_="form-control") }}<br>
                {% for error in class.class_name.errors %}
                <span class="error">[{{ error }}]</span>
                {% endfor %}
            </p></td>
            <td><p>
                {{ class.class_size(class_="form-control") }}<br>
                {% for error in class.class_size.errors %}
                <span class="error">[{{ error }}]</span>
                {% endfor %}
            </p></td>
            <td><p>
                {{ class.class_type(class_="form-control") }}<br>
                {% for error in class.class_type.errors %}
                <span class="error">[{{ error }}]</span>
                {% endfor %}
            </p></td>
        </tr>
        {% endfor %}
    </table>
    <p>{{ details_form.continue_button(class_="btn btn-primary") }}</p>
</form>