如何将字段动态添加到Flask表单?

2024-09-29 23:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个Flask应用程序,它要求用户添加可变数量的数据点,这些数据点将在稍后进行处理。我正在寻找的格式是:

^{tb1}$
<button>Add Row</button>

我对整个Flask环境还不熟悉,大多数YouTube教程的重点都是在固定字段数的情况下创建登录页面。有办法解决这个问题吗?我尝试使用以下方法:

from flask_wtf import FlaskForm
from wtforms import StringField, SelectField, IntegerField
from wtforms.fields.core import FieldList, FormField
from wtforms.validators import DataRequired, Length

class KeyValueForm(FlaskForm):
    key = StringField('Key', validators=[DataRequired(), Length(min=5)])
    value = SelectField('Data Type', validators=[DataRequired()], choices=[('int', 'int'), ('dict', 'dict'), ('string', 'string'), ('boolean', 'boolean')])

class CreateLicenseForm(FlaskForm):

    product_name = StringField('Product Name', validators=[DataRequired(), Length(min=2)])
    data = FieldList(FormField(KeyValueForm))

    def addEntry(self):
        self.data.append_entry(FormField(KeyValueForm))

<div class="content-section">
        <form action="">
            {{ form.hidden_tag()}}
            <fieldset class="formgroup">
                <legend class="border-bottom mb-4">Create Product</legend>
            </fieldset>
            <div class="form-group">
                {{ form.product_name.label(class='form-control-label') }}
                {{ form.product_name(class='form-control') }}
            </div>
            {% for field in form.data %}
            <p>{{ field }}</p>
            {% endfor %}
        </form>
        <button class="btn btn-primary" onclick="{{ form.addEntry() }}">Add Row</button>
    </div>

Tags: fromimportdivformbuttonproductlengthwtforms

热门问题