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

时间:2013-09-30 18:24:48

标签: python html forms flask

我有一个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。

1 个答案:

答案 0 :(得分:2)

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

最简单的方法是使用author-IDtitle-ID等名称,然后迭代字段,从密钥中提取ID和实际名称。