Python 在Flask中对HTML输入字段进行分组

Python 在Flask中对HTML输入字段进行分组,python,html,forms,flask,Python,Html,Forms,Flask,我有一个HTML表单,可以接受任意数量的书籍及其作者。我正在尝试对相应的书籍和作者进行分组,以便在用户提交表单时,服务器可以轻松解析这些书籍和作者。我尝试使用HTML字段集,但我不确定这是否是正确的方法 当我向服务器提交表单时,Flask的请求中没有字段集的概念 以下是HTML表单: <form action="/save/" method="POST"> <fieldset> <input name="author" value="Mar

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

当我向服务器提交表单时,Flask的
请求中没有字段集的概念

以下是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>
您可以看到,服务器接收的数据没有字段集或任何类型的分组的概念


有没有更好的方法将每本书与其对应的作者分组?我更喜欢在HTML中完成所有这些,而不是使用jQuery/JSON/AJAX

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


最简单的方法是使用像
作者ID
标题ID
这样的名称,然后在字段上迭代,从键中提取ID和实际名称。

对于如何在服务器看到图书时保持图书的顺序,您有什么建议吗?我可以使用您建议的方法,但当我记录request.form.you时,不会维护书籍/作者的顺序。数据存储在一个多目录中,与所有目录一样,它们不保持顺序。不管怎么说,依赖字段顺序不是一个好主意。实际上@Raj可以保留顺序,您只需将其用作备份存储。有关更多详细信息,请参阅
ImmutableMultiDict([('book', u'The Adventures of Tom Sawyer'), ('book', u'Civil Disobedience'), ('author', u'Mark Twain'), ('author', u'Henry David Thoreau')])