具有多个相同行的表格
Form with multiple identical lines
我正在编写一个 Flask 应用程序,用户必须在其中输入他们计划在一个学期内学习的所有大学课程。所需数据是一个代码(例如 'CMPT')和一个数字(例如“101”)。
我希望用户能够输入 最多 10 门课程。我想通过重用我创建的 CourseForm
来做到这一点,而不是为每门课程手动创建字段。我尝试使用 FieldList
和 FormField
创建一个使用 CourseForm
的新表单,但我无法正确显示它。
如何创建包含 10 个课程空位的表格?
class CourseForm(Form):
code = SelectField('Course Code', choices=CHOICES)
number = IntegerField('Course Number')
@app.route(...)
def index():
form = CourseForm()
return render_template('main.html', title='Main', form=form)
main.html
:
...
<form action="" method="post" name="course">
{{ form.hidden_tag() }}
<p>{{ form.code() }} {{ form.number() }}</p>
<p><input type="submit" value="Submit"></p>
</form>
...
您在 FieldList
和 FormField
的正确轨道上。
从你的CourseForm
开始。
class CourseForm(Form):
code = SelectField('Course Code', choices=CHOICES)
number = IntegerField('Course Number')
然后您需要将其封装在另一个表单中。为了这个例子,我将其称为 RegisteredCoursesForm
。您可以使用 max_entries
将条目数限制为 10。如果您始终希望 10 个条目可用,即使它们不会全部填写,您也可以包括 min_entries
.
class RegisteredCoursesForm(Form):
courses = FieldList(FormField(CourseForm), min_entries=10, max_entries=10)
# Any other fields can go here (e.g., user_id).
您需要将此新表单传递给您的模板而不是 CourseForm
。
def index():
form = RegisteredCoursesForm()
return render_template('main.html', title='Main', form=form)
最后,您可以遍历 courses
字段以获取不含 CourseForm
的所有字段。
<form action="" method="post" name="course">
{{ form.hidden_tag() }}
{% for course_form in form.courses %}
<p>{{ course_form.code }} {{ course_form.number }}</p>
{% endfor %}
<p><input type="submit" value="Submit"></p>
</form>
我正在编写一个 Flask 应用程序,用户必须在其中输入他们计划在一个学期内学习的所有大学课程。所需数据是一个代码(例如 'CMPT')和一个数字(例如“101”)。
我希望用户能够输入 最多 10 门课程。我想通过重用我创建的 CourseForm
来做到这一点,而不是为每门课程手动创建字段。我尝试使用 FieldList
和 FormField
创建一个使用 CourseForm
的新表单,但我无法正确显示它。
如何创建包含 10 个课程空位的表格?
class CourseForm(Form):
code = SelectField('Course Code', choices=CHOICES)
number = IntegerField('Course Number')
@app.route(...)
def index():
form = CourseForm()
return render_template('main.html', title='Main', form=form)
main.html
:
...
<form action="" method="post" name="course">
{{ form.hidden_tag() }}
<p>{{ form.code() }} {{ form.number() }}</p>
<p><input type="submit" value="Submit"></p>
</form>
...
您在 FieldList
和 FormField
的正确轨道上。
从你的CourseForm
开始。
class CourseForm(Form):
code = SelectField('Course Code', choices=CHOICES)
number = IntegerField('Course Number')
然后您需要将其封装在另一个表单中。为了这个例子,我将其称为 RegisteredCoursesForm
。您可以使用 max_entries
将条目数限制为 10。如果您始终希望 10 个条目可用,即使它们不会全部填写,您也可以包括 min_entries
.
class RegisteredCoursesForm(Form):
courses = FieldList(FormField(CourseForm), min_entries=10, max_entries=10)
# Any other fields can go here (e.g., user_id).
您需要将此新表单传递给您的模板而不是 CourseForm
。
def index():
form = RegisteredCoursesForm()
return render_template('main.html', title='Main', form=form)
最后,您可以遍历 courses
字段以获取不含 CourseForm
的所有字段。
<form action="" method="post" name="course">
{{ form.hidden_tag() }}
{% for course_form in form.courses %}
<p>{{ course_form.code }} {{ course_form.number }}</p>
{% endfor %}
<p><input type="submit" value="Submit"></p>
</form>