带下划线的表单域不起作用
Form field with underscore doesn't work
我正在使用表单从 post 请求中获取数据,我注意到一些我不熟悉的行为。我的表格有两个版本,如下所示。唯一的变化是在表单的第二个版本中,我的变量名中有一个下划线。
class EditTitleForm(Form):
newTitle = StringField('newTitle')
currentTitle = StringField('currentTitle')
class EditTitleForm(Form):
new_title = StringField('newTitle')
current_title = StringField('currentTitle')
然而,当我尝试 print(form.new_title.data)
和 print(form.current_title.data)
时,我得到一个空行,但是当我将表单切换到没有下划线的版本时,一切都打印出来了。这是为什么?
@auth.route('/edit_title', methods=['POST'])
def edit_title():
data = MultiDict(mapping=request.json)
print(data)
form = EditTitleForm(data)
print(form.newTitle.data)
print(form.currentTitle.data)
字段的名称与正在读取的数据中的键相对应。如果更改字段名称,则还需要更改 JSON 数据中的键。设置标签(字段的第一个参数)对此没有影响,仅在将字段呈现为 HTML.
时使用
# if attribute name is new_title
new_title = StringField()
# then data key must be new_title as well
data = {
"new_title": "Stack Overflow"
}
WTForms 可以 与 JSON 一起使用,但如果您想要更适合它的东西,请尝试 Marshmallow 或其他序列化库。
我正在使用表单从 post 请求中获取数据,我注意到一些我不熟悉的行为。我的表格有两个版本,如下所示。唯一的变化是在表单的第二个版本中,我的变量名中有一个下划线。
class EditTitleForm(Form):
newTitle = StringField('newTitle')
currentTitle = StringField('currentTitle')
class EditTitleForm(Form):
new_title = StringField('newTitle')
current_title = StringField('currentTitle')
然而,当我尝试 print(form.new_title.data)
和 print(form.current_title.data)
时,我得到一个空行,但是当我将表单切换到没有下划线的版本时,一切都打印出来了。这是为什么?
@auth.route('/edit_title', methods=['POST'])
def edit_title():
data = MultiDict(mapping=request.json)
print(data)
form = EditTitleForm(data)
print(form.newTitle.data)
print(form.currentTitle.data)
字段的名称与正在读取的数据中的键相对应。如果更改字段名称,则还需要更改 JSON 数据中的键。设置标签(字段的第一个参数)对此没有影响,仅在将字段呈现为 HTML.
时使用# if attribute name is new_title
new_title = StringField()
# then data key must be new_title as well
data = {
"new_title": "Stack Overflow"
}
WTForms 可以 与 JSON 一起使用,但如果您想要更适合它的东西,请尝试 Marshmallow 或其他序列化库。