在flask-wtf中创建同名提交可以通过使用FieldList
和FormField
来实现。同名提交是指在表单中有多个相同字段名的输入,例如多个文本框或复选框。
首先,需要导入必要的模块和类:
from flask_wtf import FlaskForm
from wtforms import StringField, FieldList, FormField, SubmitField
然后,创建一个表单类,并定义需要的字段:
class MyForm(FlaskForm):
name = StringField('Name')
age = StringField('Age')
hobbies = FieldList(StringField('Hobby'))
submit = SubmitField('Submit')
在上面的代码中,我们定义了一个MyForm
类,其中包含了name
、age
和hobbies
字段,以及一个提交按钮submit
。
接下来,在视图函数中使用该表单类,并处理表单的提交:
from flask import Flask, render_template, request
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
# 处理表单提交的数据
name = form.name.data
age = form.age.data
hobbies = form.hobbies.data
# 其他逻辑处理...
return 'Form submitted successfully!'
return render_template('index.html', form=form)
if __name__ == '__main__':
app.run()
在上面的代码中,我们创建了一个名为index
的视图函数,通过GET请求渲染表单页面,通过POST请求处理表单提交。如果表单验证通过,可以通过form.name.data
、form.age.data
和form.hobbies.data
获取表单中对应字段的值。
最后,在模板文件index.html
中渲染表单:
<form method="POST" action="/">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name }}
{{ form.age.label }} {{ form.age }}
{% for hobby in form.hobbies %}
{{ hobby.label }} {{ hobby }}
{% endfor %}
{{ form.submit }}
</form>
在上面的代码中,我们使用form.name.label
、form.name
等表单字段的属性来渲染表单的标签和输入框。
这样,就可以在flask-wtf中创建同名提交的表单了。对于更复杂的表单,可以使用FieldList
和FormField
来动态添加和删除字段。关于flask-wtf的更多详细信息和用法,请参考官方文档。
领取专属 10元无门槛券
手把手带您无忧上云