<p>它必须是一个表单,或者必须使用Javascript。</p>
<p>有两种方法可以用来处理按钮单击。一种方法是使用表单,另一种方法是使用jQuery(尽管vanilla JS就足够了)。</p>
<p>如果您决定使用表单,显然,您的按钮应该在表单中。最终的结果将类似于下面的结果。</p>
<pre><code><div class="container">
...
<form action="/button" method="get"> <!-- or method="post" -->
<input type="submit" value="Click Me" >
</form>
...
</div>
</code></pre>
<p>如果决定使用jQuery,则必须处理按钮按下。如果按下按钮,则需要向<code>GET</code>发送<code>/button</code>请求。您的按钮应该有一个<code>id</code>,这样我们就可以很容易地识别出我们正在处理的是哪个按钮。</p>
<p>然后,jQuery代码将类似于下面的代码。</p>
<pre><code>$("input").click(function() { // or $("input#<input id, if it has one>")...
$.get('/button');
// If you want to post to the backend instead, do
// $.post('/button');
});
</code></pre>
<p>对于这两种情况,您的<code>.py</code>文件通常保持不变。</p>
<h3>旁注</h3>
<p>每次发送请求时(即每次按下按钮时),您可能希望在请求中的<code>ButtonPressed</code>文件中增加<code>.py</code>。Python文件如下所示:</p>
<pre><code>ButtonPressed = 0
@app.route('/button', methods=["GET", "POST"])
def button():
if request.method == "POST":
ButtonPressed += 1 # Note this increment here.
return render_template("button.html", ButtonPressed = ButtonPressed)
return redirect(url_for('button'))
</code></pre>
<p>如果不增加<code>ButtonPressed</code>,将始终显示<code>0</code>,而不是按钮被按下的次数。</p>
<hr/>
<h2>附录</h2>
<p>如果从表单(即使用<code>method="post"</code>而不是<code>method="get"</code>)或jQuery代码(即使用<code>$.post(...)</code>而不是<code>$.get(...)</code>)发送<code>POST</code>请求,则应修改代码以接受<code>POST</code>请求,而不是<code>GET</code>请求。换句话说,您的<code>.py</code>文件应该包含如下内容。</p>
<pre><code>ButtonPressed = 0
@app.route('/button', methods=["GET", "POST"])
def button():
if request.method == "POST":
return render_template("button.html", ButtonPressed = ButtonPressed)
return redirect(url_for('button'))
</code></pre>
<p>如果您考虑同时接受<code>GET</code>和<code>POST</code>对<code>/button</code>的请求,只需在条件语句中添加<code>or</code>条件。你的条件语句是<code>if request.method == "POST" or request.method == "GET"</code>。</p>