- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Flask 和 Flask-WTF,我需要创建一个包含多个具有相似结构的 block (子表单)的表单(例如具有一个 SelectField
和一个 TextAreaField 的子表单)
)。作为docs suggest ,我可以使用 FormField
和 FieldList
来实现这个目标。但是,我需要动态调整我的SelectField
(根据数据库中的值在运行时更改其选择
)。现在的文档 suggest
Note that the choices keyword is only evaluated once, so if you want to make a dynamic drop-down list, you’ll want to assign the choices list to the field after instantiation.
可以找到这种方法的示例 here 。但是,FormField
接受 form_class
,而不是一个实例(至少根据文档),因此这两个方法似乎不能很好地协同工作。
还有其他想法吗?
最佳答案
好吧,比我想象的要容易。您必须创建带有空选项的子表单,创建它们的列表,然后调整列表项内的选项。
class UserForm(wtforms.Form):
# must inherit from wtforms.Form, not flask-WTForms'
# see http://stackoverflow.com/questions/15649027/wtforms-csrf-flask-fieldlist
first_name = StringField('First Name', [validators.DataRequired()])
last_name = StringField('Last Name', [validators.DataRequired()])
accepted_policy = BooleanField('Accept Policy')
experience = SelectField('Experience', coerce=int)
class UsersForm(Form):
users = FieldList(FormField(UserForm), min_entries=2)
@app.route('/', methods=['GET', 'POST'])
def hello_world():
form = UsersForm(users=[{}, {}, {}])
form.users[0].experience.choices=[(1, 'One'), (2, 'Two')]
form.users[1].experience.choices = [(1, 'Uno'), (2, 'Du')]
form.users[2].experience.choices = [(0, 'Zero')]
return render_template("hello.html", form=form)
这是一个模板:
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
<form method=post>
<dl>
{{ form.hidden_tag()}}
{% for user_entry_form in form.users %}
{{ user_entry_form.name }}
{{ render_field(user_entry_form.first_name) }}
{{ render_field(user_entry_form.last_name) }}
{{ render_field(user_entry_form.experience) }}
{% endfor %}
</dl>
<p><input type=submit value=Go!>
</form>
关于wtforms - FieldList 内动态调整的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159368/
我正在使用 Flask 和 Flask-WTF,我需要创建一个包含多个具有相似结构的 block (子表单)的表单(例如具有一个 SelectField 和一个 TextAreaField 的子表单)
我想以特定顺序检索对象中的字段。我找到了一种使用反射来检索字段的方法,但不能保证每次都以相同的顺序返回字段。这是我用来检索字段的代码: ReleaseNote rn = new ReleaseNote
我有以下表格, class AddForm(wtf.Form): tags = TagListField("Tags (comma separated)", validators=[wtf.R
我使用 WTForms FieldList字段列表的字段。它获取这些输入字段的值,这些值按它们在 form.data 中的名称排序。但我想按照它们在表单中出现的顺序获取值。覆盖 process 函数是
wtforms FieldList && 验证出现问题...应该说该字段必须有Int值,而不是This field is required为什么 f.data 具有 [None, 2, None] 值
将FieldList与WTForms一起使用时,通过验证时遇到麻烦。我不断收到此错误。 {'csrf_token': [u'CSRF token missing']}。问题是,如果我在FieldLis
我正在使用 WTForm 来验证我直接从 javascript 模型提交的表单(通过挖空填充)。在我的表单中,我有一个可以动态添加/删除的银行帐户列表。在 python 方面,我有这样的东西: cla
我有这个订单表格,允许我的用户创建订单。一个订单由 (producetype, quantity) 的多个元组组成. Producetype 应在 中呈现形式而数量可以只是一个输入。 produce
我有一个 flask + wtforms 应用程序,我希望用户能够在其中输入父对象和任意数量的子对象。我不确定从用户界面动态创建新子表单输入字段的最佳方式是什么。 到目前为止我得到了什么 下面是一个完
我们有以下表单,我们正在尝试为每个组创建 GroupRoleForms 列表。 class FullNameMixIn(): full_name = TextField( 'F
我在 Filling WTForms FormField FieldList with data results in HTML in fields 上看到了同样的奇怪行为我的原始字段使用 HTML
这个问题已经有答案了: How to populate wtform select field using mongokit/pymongo? (2 个回答) 已关闭 4 年前。 类似于这个问题: D
我在 FieldList 中的 FormField 中有一个自定义字段:locations class LocationForm(Form): id = HiddenField('id')
我有一个带有 flask-wtf 的表单用于上传图片,文件字段也可以多个字段。 我的表单: class ComposeForm(Form): attachment = FieldList(Fi
我正在使用 Flask 构建网站我在其中使用 WTForms .在 Form 中,我现在想使用 FormFields 的 FieldList,如下所示: class LocationForm(Form
我正在尝试使用 WTF 字段、FormField、FieldList 创建一个 ListItem 表单: forms.py class WarehouseTicketItemForm(Form):
确实缺乏有关如何使用 WTForms 的 FieldList 的文档。因此,多亏了互联网,我才能够将以下内容组合在一起: 表格: class BranchForm(Form): name =
我正在尝试创建一个动态表单(在 python Flask 应用程序中)使用WT 表格。 WTForms 包含一个用于字段列表的 FieldList 字段。我想用它来制作一个表单,用户可以在其中添加或删
我想生成带有复选框的文件列表。我试过使用 FieldList 但它没有像我预期的那样工作。我得到的不是带有指定文件名的复选框,而是带有以包含 FieldList 对象的变量命名的标签的复选框。有什么办
我有一个 Flask 应用程序,我可以通过上传一个 CSV 文件来填充表单数据,然后读取该文件。我想用从 CSV 读取的数据填充一个 FieldList。但是,当我尝试填充数据时,它会将原始 HTML
我是一名优秀的程序员,十分优秀!