提交前创建表单列表

Create a list of forms before submitting

我对 Flask 和 Web 开发还很陌生,所以我不确定这样做是否不好。

我在显示视频的 html 模板上展示了一个烧瓶表格。

class MyForm:
    string1 = StringField('string',  validators=[DataRequired()])
    selectField = SelectField(
        'Select',
        choices=['Choice 1','Choice 2','Choice 3'],
        validators=[DataRequired()]
    )
    submit = SubmitField('Submit')

有没有一种方法可以创建一个已完成表单的缓冲区,以便他们可以观看整个视频而不会在每次提交表单时都被重定向? (表格与视频相关,结束前可多次填写)

我想有效地处理他们在视频结尾提交的一系列表格。

谢谢。

您可以使用 FieldList。这是一个工作片段:

from flask import Flask, render_template_string
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, FieldList, FormField, SelectField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'asrtarst'


class SingleTestForm(FlaskForm):
    string1 = StringField('string', validators=[DataRequired()])
    selectField = SelectField(
        'Are you Happy?',
        choices=[('1', 'Yes'), ('2', 'No')],
        validators=[DataRequired()]
    )


class MultiTestForm(FlaskForm):
    name = StringField('name')
    memories = FieldList(FormField(SingleTestForm), min_entries=5)
    submit = SubmitField('Submit')


@app.route('/test', methods=['GET', 'POST'])
def test():
    form = MultiTestForm()
    if form.validate_on_submit():
        return 'nice form'
    return render_template_string(
    '''
    <html>
        <h1>{{ url_for('test') }}</h1>
    <form method="POST" action="{{ url_for('test')}}">
    {{ form.hidden_tag() }}
        <div>{{ form.name.label }}: {{ form.name() }}</div>
        <div>{{ form.memories.label }}: {{ form.memories() }}</div>
        <div>{{ form.submit.label }}: {{ form.submit() }}</div>
    </form>
    </html>
    ''', form=form)

然后您可以在客户端使用 javascript 只显示当前的子表单。