我想知道为什么这不能按计划进行。下表为表格。每个表行都有一个book id
和book title
。 book 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)
答案 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>