如何在FieldList[Flask]的表单中动态添加输入字段?

2024-09-27 02:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个带有表单的网站,允许用户输入内容并添加更多的输入字段,它有点像输入技能的输入字段,所以如果你有更多的技能,你可以添加更多的技能。但是我很难用FieldList显示多个输入字段,因为它只显示我设置的min_条目的数量,即使我复制并粘贴html代码,它也只接受第一个

forms.py(现在请关注内容)

class ExerciseForm(FlaskForm):
    exercise = StringField(validators=[DataRequired()])
    testcase = StringField(validators=[DataRequired()])

class AddTopicForm(FlaskForm):
    topicname = StringField('Topic Name', validators=[DataRequired(), Length(min=2, max=100)])
    contents = FieldList(StringField(validators=[DataRequired()]), min_entries=1, max_entries=20)
    exercises = FieldList(FormField(ExerciseForm), min_entries=0, max_entries=10)
    submit = SubmitField('Add Topic')

html(我不知道如何添加一个,以及如何使其工作)

    <div class="addtopicform">
        <form method="POST" action="">
            {{ form.hidden_tag() }}
            <fieldset>
                <div class="form-group">
                    {{ form.topicname }}
                </div>
                <div class="form-group">
                    {{ form.contents }}
                </div>
                <button type="button" onclick="addsection()">Add Section</button>
            <script>

            </script>
                <div class="form-group">
                    {% for field in form.exercises %}
                        {{ field }}
                    {% endfor %}
                </div>
                <div class="form-group form-btn">
                    {{ form.submit(class="btn") }}
                </div>
            </fieldset>
        </form>
    </div>

py(最好的结果是内容中有一个数据,但显然我想要更多)

@app.route("/addtopic/", methods=['GET', 'POST'])
def addtopic():
    if 'AccountID' in session:
        form = AddTopicForm()
        if session["Type"] == "teacher":
            if request.method == 'POST' and form.validate_on_submit():
                print("success")
                topicname = request.form['topicname']
                contents = form.contents.data
                exercises = form.exercises.data
                print(topicname)
                print(contents)
                print(exercises)
                return render_template('course.html', user=session['Name'], acctype=session["Type"])
            else:
                return render_template('addtopic.html', user=session['Name'], acctype=session["Type"], form=form)
        else:
            flash("Only teachers can access to this page", "failure")
            return render_template('course.html', user=session['Name'], acctype=session["Type"])
    else:
        flash('An account is needed to access courses', 'failure')
        return redirect(url_for('login'))

请帮助我,我在网上找不到任何有用的资源,因为所有这些资源都假设我已经有一个列表,或者正在使用input元素而不是flask元素,这对flask表单根本不起作用


Tags: namedivformsessionhtmlcontentsgroupmin

热门问题