从post请求返回空数组

2024-04-19 01:42:51 发布

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

我的价值观还远远不够。 我有一个autocomplete插件,在这里我从一个JSON对象中搜索“names”,每次我选择一个,它们都会传递到一个带有value="the ID"的列表中。在

我在WTForms中找不到无序列表,因此我改用SelectMultipleField,因为它可以作为数组/列表传递许多值

我的表格是这样的:

class ClassForm(Form):
    function_name      = StringField('names')
    studentid          = SelectMultipleField('studentid')
    submit             = SubmitField('submit')

然后在我的模板中我是这样使用它的

^{pr2}$

我的问题是它无法从列表中获取值,即使我直接硬编码这些值,而不是从jquery脚本获取值。在

以下是我的观点

@app.route('/index', methods=['GET', 'POST'])
def index():
    form = ClassForm()
    if request.method == 'POST' and form.validate_on_submit():
        flash('valid form')
        st = form.studentid.data
        print(st)#debug
    return render_template('index.html', form=form)

每次我提交时我都在打印form.studentid.data我得到的是{},这是一个空列表。在

即使我试图传递单个值并将studentid转换为StringField,我仍然得到一个空值。在

我也尝试过request.form['studentid'],但是我得到了一个错误的请求我做错了什么,还有其他方法传递“自定义”值吗?在


Tags: form列表dataindexnamesrequestpostautocomplete
1条回答
网友
1楼 · 发布于 2024-04-19 01:42:51

它不能工作的原因是因为<li>不是一个表单控件,所以它的数据不会随表单请求一起发送回来。在

您永远不会从表单类呈现studentid字段,因此表单控件永远不会呈现。这就好像期待着以下几点能够奏效:

<form>
   <p name="foo" data="hello">This should be sent</p>
   <input type="submit">
</form>

要将数据返回视图方法,需要使用窗体控件-可以按如下方式进行测试:

^{pr2}$

或者,只需正确渲染字段:

<form id="function_search_form" method="post" action="">
  {{ form.csrf_token }}

  {{form.function_name.label()}}
  {{form.function_name()}}
  {{form.studentid.label()}}
  {{form.studentid}}

  {{ form.submit()}}
</form>

相关问题 更多 >