【问题标题】:Create a list of forms before submitting提交前创建表单列表
【发布时间】:2018-04-13 09:37:36
【问题描述】:

我对烧瓶和 Web 开发还很陌生,所以我不确定这是否是一种不好的做法。

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

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

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

我想在视频结尾处有效地提交一组表单。

谢谢。

【问题讨论】:

    标签: python-3.x flask flask-wtforms


    【解决方案1】:

    您可以使用FieldList。这是一个有效的 sn-p:

    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 来仅显示当前子表单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多