3

我有一个 HTML 表单,可以接受任意数量的书籍及其作者。我正在尝试对相应的书籍和作者进行分组,以便在用户提交表单时服务器可以轻松地对其进行解析。我尝试使用 HTML 字段集,但我不确定这是否是正确的方法。

当我将表单提交到服务器时,Flask 中没有字段集的概念request.form

这是 HTML 表单:

<form action="/save/" method="POST">

    <fieldset>
        <input name="author" value="Mark Twain" class="author" type="text">
        <input name="book" value="The Adventures of Tom Sawyer" class="book" type="text">        
    </fieldset>

    <fieldset>
        <input name="author" value="Henry David Thoreau" class="author" type="text">
        <input name="book" value="Civil Disobedience" class="book" type="text">        
    </fieldset>

    <!--More books and authors here possibly-->

    <button type="submit">Save</button>

</form>

这是我登录时在服务器上看到的内容request.form

ImmutableMultiDict([('book', u'The Adventures of Tom Sawyer'), ('book', u'Civil Disobedience'), ('author', u'Mark Twain'), ('author', u'Henry David Thoreau')])

您可以看到服务器接收到的数据没有任何类型的字段集或分组的概念。

有没有更好的方法将各个书籍与其相应的作者分组?我更愿意在 HTML 中完成所有这些操作,而不是使用 jQuery/JSON/AJAX。

4

1 回答 1

3

不,不幸的是,这是不可能的。为字段提交的唯一数据是其名称和值。虽然 Flask 处理表单数据的方式(名称不影响处理)通常比 PHP(其中的名称author[some_id]会创建一个数组)更好,但这是您需要手动处理的少数情况之一。

最简单的方法是使用名称author-IDtitle-ID然后遍历字段,从键中提取 ID 和实际名称。

于 2013-09-30T18:42:18.883 回答