我对烧瓶和网络开发都很陌生,所以我不确定这是不是很糟糕。
我在一个显示视频的html模板上显示了一个烧瓶表单。
class MyForm:
string1 = StringField('string', validators=[DataRequired()])
selectField = SelectField(
'Select',
choices=['Choice 1','Choice 2','Choice 3'],
validators=[DataRequired()]
)
submit = SubmitField('Submit')
有没有办法可以创建已完成表单的缓冲区,以便他们可以在每次提交表单时观看整个视频而不会被重定向? (表格与视频有关,可以在结束前多次填写。)
我希望在视频结尾处有效地提供一系列表单。
感谢。
答案 0 :(得分:1)
您可以使用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仅显示当前子表单。