- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用flask-wtf 编写了一些使用FieldList
的表格。和 FormField
, 我想用 pytest
测试它们.这是从上传的 CSV 批量插入数据
这些是我的表格:
# myapp/admin/forms.py
from wtforms import Form as NoCsrfForm
class SimpleRegistrationForm(NoCsrfForm):
email = StringField('Email')
username = StringField('Username')
password = StringField('Password')
from flask_wtf import FlaskForm
class BulkUserCreationForm(FlaskForm):
users = FieldList(FormField(SimpleRegistrationForm))
submitted = HiddenField()
submit = SubmitField('Register all')
def is_submitted(self):
from flask import request
return super().is_submitted() and 'submitted' in request.form
submitted
阻止我的
@app.route
从路过
validate_on_submit()
.
# a part of a test
# (...) mumble mumble
from myapp.admin.forms import (
BulkUserCreationForm, SimpleRegistrationForm)
usr_form_1 = SimpleRegistrationForm(username="user1",
email="user1@mail.com",
password="pwd1",)
usr_form_2 = SimpleRegistrationForm(username="user2",
email="user2@mail.com",
password="pwd2",)
usr_form_full = BulkUserCreationForm(
users=[usr_form_1, usr_form_2])
# user issues a POST request
rv = client.post(
url_for('bulk-import-users.edit_users')
follow_redirects=True,
data=usr_form_full.data)
assert something_happened()
data
而苦苦挣扎
post()
的论点.到目前为止,我已经阅读了三种方法
BulkUserCreationForm.users
usr_form_full.data
一个表单实例,它返回一个字典。在提到的 SO 答案中,它似乎有效,但在我的情况下(以及我展示的代码),我收到了以下形式的错误:/src/venv/lib/python3.6/site-packages/werkzeug/test.py:349: DeprecationWarning: it's no longer possible to pass dicts as `data`. Use tuples or FileStorage objects instead
data_full = {field.label.field_id: field.data
for form in usr_form_full.users
for field in form}
data
属性。它没有用。出于某种原因,呈现的
.data
属性的行为与预期不同,返回不同的
repr
(我希望看到实际值)。
>>> print(data_full)
{'users-0-email': <wtforms.fields.core.StringField object at 0x7f1704f68cc0>, 'users-0-username': <wtforms.fields.core.StringField object at 0x7f1704fa5e10>, 'users-0-password': <wtforms.fields.core.StringField object at 0x7f1704f539e8>, 'users-1-email': <wtforms.fields.core.StringField object at 0x7f1704f26a90>, 'users-1-username': <wtforms.fields.core.StringField object at 0x7f1704f26f98>, 'users-1-password': <wtforms.fields.core.StringField object at 0x7f1704f26828>}
submit
和
submitted
我的表单实例的值呢?
最佳答案
就我而言,我想测试传递给我的表单的参数是否传递给下游函数。
form = MyForm()
if form.validate_on_submit():
args = unpack_form(form)
do_something(args)
我在模拟嵌套的 FormField 值时遇到了同样的问题,所以我想出的解决方案是提供一个数据字典,其中键是表单的字段。如果字段是 FormField,则在父字段名称和嵌套表单字段名称之间添加破折号:
{"parent_form_field-nested_form_field" : "value"}
例如测试这个
class ContactDetailsForm(FlaskForm):
phone_number = StringField("Phone number")
email = StringField("Email")
class UserForm(FlaskForm):
name = StringField("Name")
work_contact = FormField(ContactDetailsForm)
home_contact = FormField(ContactDetailsForm)
编写以下模拟
def test_user_form(app):
data = {
"name": "John",
"work_contact-phone_number": "1234",
"work_contact-email": "john@work.com",
"home_contact-phone_number": "5678",
"home_contact-email": "john@home.com"
}
app.post("/user_form", data=data)
关于python - 测试使用 `FieldList` 和 `FormField` 的 Flask-WTF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887291/
我正在尝试迭代 Formfield 中的 FormField,它们都是 FieldList 的一部分。 在我的 views.py 中,我调用 mainForm,模板通过 FormField subFo
我在 WTForms 中设置 FieldForm 的默认值时遇到问题。 models.py class RepairCategory(db.Model): name = ... class R
我正在使用 WTForms-JSON和处理嵌套表单。我想让内部表单可选,但如果存在内部表单,我希望它的字段是必需的。我遇到的问题是 FormField不接受验证器。 (虽然我使用的是 WTForms-
这个问题有一个 Stackblitz:stackblitz.com/edit/angular-material-starter-template-8ojscv . 我已经实现了 custom Angu
我正在尝试添加字段和注释,但是当我尝试设置值时,出现此错误object.must.be.indirect.to.work.with.this.wrapper 。似乎无论设置哪个字段或在何处设置,都会发
当我使用 WTForms-JSON 时,嵌套表单 (FormFields) 没有填充数据。我无法发现我的错误,请参见下面的示例。 from flask import Flask, request, j
我有一个表格 wtform , 我想添加一个新表格 JobItemForm到我的表格JobForm使用 append_entry . JobItemForm有selectField名为 company
我们有以下表单,我们正在尝试为每个组创建 GroupRoleForms 列表。 class FullNameMixIn(): full_name = TextField( 'F
我正在自定义 NewForm.aspx 页面,并以文本框的形式创建了一些新的 SharePoint:FormFields。我希望根据具体情况自定义这些框的高度,但我无法弄清楚。 我研究过 Displa
我正在尝试弄清楚如何遍历文档并提取所有表单域并将它们插入到新的文本文件中。我正在研究它,试图找到我将需要的功能的示例,但我没有提供很多信息。也许我没有正确搜索。这是我到目前为止所写的内容。 using
我在 FieldList 中的 FormField 中有一个自定义字段:locations class LocationForm(Form): id = HiddenField('id')
我正在使用 Flask 构建网站我在其中使用 WTForms .在 Form 中,我现在想使用 FormFields 的 FieldList,如下所示: class LocationForm(Form
我正在尝试使用 WTF 字段、FormField、FieldList 创建一个 ListItem 表单: forms.py class WarehouseTicketItemForm(Form):
在 Symfony 项目中,我有一个表单 EventSubscriber 作用于多个表单。 它旨在禁用已填充的每个字段。 在订阅者中,当我使用: $childOptions = $child->get
iText 7 表单字段中的默认行距似乎是 2 或 1.5,但我真的很想删除行距。通常,我通过调用 setMultipliedLeading(..) 来设置行间距。在 Paragraph对象,但都不是
我在路由中使用它从表单获取数据时遇到问题 forms.py class Calculator(Form): amount = IntegerField('Amount') weight
我有一个类似下面的表格: class ConsentFormTpl(forms.Form): title = forms.CharField() message = forms.Ch
我是 Flutter 的新手,我在创建自定义表单域方面遇到了一些困难。问题是我的自定义 FormField 中的验证器和 onSaved 方法都没有被调用。我真的不知道为什么当我触发 formKey.
我有一个 Flask 应用程序,我可以通过上传一个 CSV 文件来填充表单数据,然后读取该文件。我想用从 CSV 读取的数据填充一个 FieldList。但是,当我尝试填充数据时,它会将原始 HTML
我在 Word 2013 中有一个模板文档,其中用户填写了大量旧文本表单域。在文档的末尾,我包含了一个按钮,可将答案编译为没有格式的字符串,然后将其复制到剪贴板。 它可以工作,但是当读取每个 Form
我是一名优秀的程序员,十分优秀!