【问题标题】:Send table data via form to Flask method通过表单将表格数据发送到 Flask 方法
【发布时间】:2018-08-11 19:24:40
【问题描述】:

我想知道为什么这没有按计划进行。下表是一个表格。每个表格行都有一个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)

【问题讨论】:

    标签: python flask forms http-post


    【解决方案1】:

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

    ...
    <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 }}" />
    ...
    

    【讨论】:

    • 我不知道提交超出了输入字段。一切似乎都关闭了“名称”属性,回想起来这是一个愚蠢的推论。感谢您的帮助和教育!
    【解决方案2】:

    为什么不试试这样添加呢?

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

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      相关资源
      最近更新 更多