Python 字段列表只获取第一个元素中的数据
我试图从使用Flask和WTForms动态生成的表单中获取数据。为此,我创建了一个列表,当用户打开链接时将填充该列表,但当我尝试从html获取数据时,我只从列表的第一个元素获取数据。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
表格: 路线:
@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>