python-3.x - 如何在本地而不是在主机上从 Web 应用程序运行功能
问题描述
我想创建一个网络应用程序,以便用户可以在他的计算机上本地运行进程(我知道目前它没有真正的用途)。
因此,我使用烧瓶创建 Web 应用程序并创建了一个按钮,该按钮调用运行该过程的函数。问题是函数在服务器上运行,而不是在用户使用的机器上运行。
例如要清楚:服务器在机器 1.2.3.4 上运行,用户从另一台机器 5.6.7.8 登录 Web 应用程序并按下按钮,函数将在主机(1.2.3.4)上运行,导致进程打开主机而不是用户计算机本地。
from flask import Flask, render_template, request, url_for, flash, redirect
import subprocess
def runchrome():
p = subprocess.Popen(r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
app = Flask(__name__)
@app.route("/home", methods=["GET", "POST"])
def home():
if request.method == "POST":
process = request.form["process"]
if process == "Chrome":
runchrome()
return render_template("Home.html")
解决方案
您不能以这种方式通过 webapp 在客户端计算机上运行 python 代码。否则每个人都可以滥用它并在访问其网站的计算机上运行任意代码。但是,您可以在客户端计算机上的浏览器中运行 javascript。
为此,您需要返回包含 javascript 的有效 html 文档。请参阅本教程作为起点:https ://www.jitsejan.com/python-and-javascript-in-flask.html
另一种方法是用户在他们的机器上安装您的应用程序。
推荐阅读
- node.js - 使用 nvm 后节点版本未在执行时更新
- reactjs - 尝试从 React 应用程序将图像定位到 s3 存储桶时出现 Coors 错误
- node.js - Nodejs 无法连接到 Access 数据库
- reactjs - 使用 apollo 客户端,如何使用反应变量触发重新订阅?
- reactjs - 反应 onClick 事件仅触发单击的 div 而不是另一个
- windows - 有没有办法找到每个 msi 文件的产品 ID(产品代码)?
- python - 如何为导入的全局赋值?
- html - 按钮图像作为提交按钮
- python - 遇到错误:进程以退出代码 132 完成(被信号 4:SIGILL 中断)
- python - 使用本地和远程的 Actor 类