Python flask 使用按钮触发脚本

标签 python linux button flask html

我正在调查网络,主要是让自己对几件事感到困惑。

首先 - 我需要什么。我的公司在非技术人员使用的 Linux 服务器上运行 Java 应用程序。有时我们必须重新启动这些程序,但首先要杀死它们。

我已经构建了一个小工具(在 linux 上运行),它使用“jps -lm |grep -v Jps”来恢复所有 java 进程,然后使用拆分和模式来制作看起来像它的东西:

You have those programs running:
1. Java A
2. Java B
3. Java C
4. Exit
5. Refresh

他们选择一个数字,它请求批准,如果允许,则终止进程(“kill procId”)并重新启动(循环直到他们输入 4,这会触发“break”)。

现在,我想更上一层楼,使用网络浏览器将它们在我的 Linux 服务器(系统管理员)附近的出现降到最低。

现在,我发现 flask 非常适合我,创建了一个网页,甚至设法让它在整个网络上可用。

我打算做的是,当有人访问该网页时,我的“jps -lm |grep -v Jps”的值将被插入到 html 文件中。 当 html 准备好后,他们将被重定向到它,按下适当的按钮,将弹出“onclick=alert('你确定吗?')”,如果获得批准,将触发 “subprocess.Popen('kill '+procId, stdout.subprocess.PIPE, shell=True)”命令将终止进程,将它们重定向到我的脚本映射当前运行的 java 的页面,该页面将它们重定向到按钮页面.

除了按钮部分,我什么都能做。不知道如何在按下后使其对 python 可用。

愿意提供任何帮助。对于我打算使用此解决方案的映射脚本:Create a hyperlink (or button) that executes a python script and then redirects when script completes .

抱歉,如果我的问题构建不当,我也会对此提供任何帮助!

谢谢!

最佳答案

看看下面的例子,希望对你有帮助

如果您使用内联 javascript,那么您不必使用此变量并且可以从 ajax 请求访问 url_for()。如果您使用单独的 javascript 文件,那么您必须将此变量放入您的模板中,因为 .js 文件不能呈现 jinja2 代码,如 {{}}

var flask_endpoint = "{{url_for('endpoint_name')}}"

仅在您的应用程序使用 CSRF 的情况下使用:

var csrftoken = "{{ csrf_token() }}";

    $.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken)
            }
        }
    })

如果没有则跳过上面的内容

你的 javascript 应该看起来像这样(你不必使用 done() 回调

$('#button-id').on('click', function(){

   var data = {'key': 'some value'};

   $.ajax({
       type : "POST",
       url : flask_endpoint,
       data: JSON.stringify(data),
       contentType: 'application/json;charset=UTF-8',
   }).done(function (result) {
       alert(result);
   });

   alert('data has been sent to the server');
});

下面是你的 python 代码应该是什么样子

from flask import request
@app.route('/ajax_endpoint', methods=['POST', 'GET'])
def endpoint_name():
    # check if the request type is POST (we defined POST for our ajax request)
    if request.method == 'POST':
        data = request.form['key'] # this is the key in our data object

        # do whatever you want with the data

关于Python flask 使用按钮触发脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38849318/

相关文章:

python - win32com 内存错误 : CreatingSafeArray attempting to insert data into excel

Python/MySQL 如何使用变量插入字符串,不断将 "TRUE"更改为 1

linux - 如何在 AWS EC2 Linux Apache 实例上查看 SMTP 服务器日志?

java - 一个 Button 的 2 个 OnClick 监听器无法解析 OnClickListener

facebook - 按“赞”按钮会在 Facebook 上创建新页面

python - 有没有更好的方法来比较字典值

python - 在 matplotlib 中创建正方形子图(高度和宽度相等)

linux - 重新连接后 USB 调制解调器多个 ttyACMx 发生变化

linux - 如何禁用 SVC ARM 指令(gcc、uclibc、buildroot)?

javascript - iframe后退按钮问题(不想后退按钮影响iframe)