提交前创建表单列表
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 只显示当前的子表单。
我对 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 只显示当前的子表单。