Flask - 在按钮 OnClick 事件上调用 python 函数

新手上路,请多包涵

我是 python 和 Flask 的新手。我有一个带有按钮的 Flask Web 应用程序。当我点击按钮时,我想执行一个 python 方法而不是 Javascript 方法。我怎样才能做到这一点?

我看过 python 的例子,它使用这样的表单标签将我重定向到一个新页面

<form action="/newPage" method="post">

但我不希望它把我重定向到一个新页面。我只是想让它执行 python 方法。 我正在为 Raspberry Pi 机器人汽车做这个。当我按下前进按钮时,我希望它运行向前转动车轮的方法。

按钮 HTML 代码 ( index.html )

 <button name="forwardBtn" onclick="move_forward()">Forward</button>

简单的 app.py 代码 - move_forward() 方法位于此处

#### App.py code

from flask import Flask, render_template, Response, request, redirect, url_for
app = Flask(__name__)

@app.route("/")
def index():
    return render_template('index.html');

def move_forward():
    #Moving forward code
    print("Moving Forward...")

我在 Stackoverflow 上看到过与我类似的问题,但它们似乎没有回答我的问题,或者我无法理解答案。如果有人能给我提供一种在按钮单击事件上调用 Python 方法的简单方法,将不胜感激。

我看过的其他问题:

Python Flask 使用按钮调用函数

使用按钮调用 python 函数

-- Flask Button 在不刷新页面的情况下运行 Python?

原文由 Amaan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
1 个回答

您可以在 AJAX 的帮助下简单地执行此操作…这是一个调用 python 函数的示例,该函数在不重定向或刷新页面的情况下打印 hello。

在 app.py 中,将代码段放在下面。

 #rendering the HTML page which has the button
@app.route('/json')
def json():
    return render_template('json.html')

#background process happening without any refreshing
@app.route('/background_process_test')
def background_process_test():
    print ("Hello")
    return ("nothing")

您的 json.html 页面应如下所示。

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
        $(function() {
          $('a#test').on('click', function(e) {
            e.preventDefault()
            $.getJSON('/background_process_test',
                function(data) {
              //do nothing
            });
            return false;
          });
        });
</script>

//button
<div class='container'>
    <h3>Test</h3>
        <form>
            <a href=# id=test><button class='btn btn-default'>Test</button></a>
        </form>

</div>

在这里,当您在控制台中按下按钮 Test simple 时,您可以看到“Hello”正在显示,但没有任何刷新。

原文由 Gihan Gamage 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏