【问题标题】:How can I make html submit button functional in flask?如何使 html 提交按钮在烧瓶中起作用?
【发布时间】:2013-01-13 05:04:17
【问题描述】:

我有一个 Flask 应用程序,在我的 html 模板(即 Jinja2)中,我有一个只有一个按钮的简单表单:

<form name='resetLayoutForm' method='POST'>
    <input type="submit" value="Reset layout" class="submitButton"/> 
</form>

现在,我想知道如何“让 Python 脚本知道”该按钮已被单击?

我试过了:

@app.route('/localhost/some_route', methods = ['POST', 'GET'])
def function():
    .   .    .
    if request.method == 'POST':
        # code
    .   .    .

但这不是一个好的解决方案,因为我在代码中还有一些其他操作正在使用 POST 请求方法,并且我不希望在使用这些其他 POST 操作时激活#code。

【问题讨论】:

  • 所以将按钮发布到仅响应该按钮的不同处理程序?
  • 只需复制包含按钮的表单并将其操作设置为不同的 URL。
  • 这对我的目的不利。我希望代码在同一个 URL 上执行。
  • 所以只需在按钮表单中包含一个标记,告诉“其他代码”在您按下该按钮时不要执行,并在您使用“正确”POST 操作时执行。你让这件事变得更复杂了,我认为它应该是这样的。
  • 您想在服务器上使用相同的表单、相同的操作 URL 执行。那么单独执行这个“其他python脚本”需要什么。我不明白。为什么你不能只执行 python 脚本并使用相同的 POST 继续你需要做的其他事情。

标签: python html forms flask submit-button


【解决方案1】:

“'让 Python 脚本知道'按钮被点击”是什么意思?

如果您不想与服务器对话并且单击按钮仅适用于客户端,那么为什么不使用 Javascript 呢?例如,最简单的方法是使用 onclick 事件:

<input type="submit" value="Reset layout" class="submitButton" onclick=doSomething() />

doSomething() 是一个你可以编写的 javascript 函数

【讨论】:

  • 我的意思是,当您单击按钮时,向 python 脚本发送 POST 请求并执行一些 Python 代码。您建议的答案不能满足我的需求,因为 doSomething() 需要是 Python 脚本,而不是 JavaScript。
  • 是的,这就是我想做的(当然,在点击按钮之后)
【解决方案2】:

复制包含按钮的表单并将其操作设置为不同的 URL。然后,当按下时,只有那个不同的 URL 会接收数据。

显然,正如其他人所指出的,有 Javascript 机制可以实现这一点,但如果不需要这些机制......

【讨论】:

    【解决方案3】:

    您可以使用request.form.values() 来检查输入的值属性,如下所示:

    @app.route('/localhost/some_route', methods = ['POST', 'GET'])
    def function():
        # code
        if 'Reset_layout' in request.form.values():
            # code
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多