我有一个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。
答案 0 :(得分:2)
不,不幸的是,这是不可能的。为字段提交的唯一数据是其名称和值。虽然Flask处理表单数据的方式(名称不影响处理)通常比PHP更好(其中author[some_id]
这样的名称会创建一个数组)这是您需要手动处理的少数情况之一
最简单的方法是使用author-ID
和title-ID
等名称,然后迭代字段,从密钥中提取ID和实际名称。