通过表格将表格数据发送到Flask方法

时间:2018-08-11 19:24:40

标签: python flask html-form html-form-post

我想知道为什么这不能按计划进行。下表为表格。每个表行都有一个book idbook titlebook title的格式设置为按钮,因此我可以在表单提交时使用post方法。单击该按钮时,该方法(如下所示)触发得很好,但是书ID没有传递给该方法。我需要将book id传递给基础方法,因为它将在SQL查询中使用。我有办法做到这一点吗?

{% block body %}
<div class="align-center">
    <form action="{{ url_for('books') }}" method="post">
        <table class="table">
            <thead>
                <tr>
                    <th></th>
                    <th>Book ID</th>
                    <th>ISBN #</th>
                    <th>Title</th>
                    <th>Author</th>
                </tr>
            </thead>
            <tfoot>
                <tr>
                    <td colspan="6"></td>
                </tr>
            </tfoot>
            {% for book in books %}
            <tr>
                <td></td>
                <td name="bookid">{{ book.id }}</td>
                <td name="bookisbn">{{ book.isbn }}</td>
                <td name="booktitle"><button btn style="border:none; border-bottom: 1px solid black;">{{ book.title }}</button></td>
                <td name="bookauthor">{{ book.author }}</td>
            </tr>
            {% endfor %}
        </table>
    </form>
</div>
{% endblock %}

这是我要发布到的Flask方法:

@app.route("/books", methods=["POST"])
@login_required
def books():
    bookid = request.form.get("bookid")
    return render_template("books.html", message=bookid)

2 个答案:

答案 0 :(得分:1)

您只能使用<input>元素从HTML表单提交值。因此,您需要将<td name="...">元素转换为<input>或在每个<td>附近添加隐藏的输入:

...
<td name="bookid">{{ book.id }}</td>
<input type="hidden" name="bookid" value="{{ book.id }}" />
<td name="bookisbn">{{ book.isbn }}</td>
<input type="hidden" name="bookisbn" value="{{ book.isbn }}" />
...

答案 1 :(得分:0)

为什么不尝试以这种方式添加它?

<td name="booktitle"><button btn value={{book.id}} style="border:none; border-bottom: 1px solid black;">{{ book.title }}</button></td>