javascript - 如何通过单击 HTML 网页上的按钮来运行 python 脚本?
问题描述
我目前有一个 python 脚本,它在运行时会更新某些 CSV 文件(它会在网络上抓取并更新 CSV 文件的信息)。在我的 HTML 页面 (index.html) 中,我在 index.html 中有一个脚本标记,用于读取 CSV 文件并将其显示为网页上的表格。但是,我现在需要做的是通过按下网页上的 HTML 按钮来更新 CSV 文件。这将更新 CSV 文件,因此当我运行按钮以运行 JS 脚本时,它将更新文件中的值。
我搜索并发现使用flask和Django很难理解它们的含义(我对设置服务器一无所知)。我不想设置 Django 网页,因为我想使用我当前编写的纯 HTML 网页。
如果答案与在 HTML 中运行 python 脚本的当前标准解决方案是最新的,我将不胜感激。
请询问您是否需要更多信息。谢谢。
解决方案
您需要设置一个 Web 服务器。Flask可用于此目的。因此,您可以创建以下脚本:
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)
@app.route('/')
def index():
with open('index.html') as fh:
return fh.read()
@app.route('/update')
def update_file():
with open('data.txt', 'w') as fh:
fh.write(datetime.now().strftime('%H:%M:%S'))
return redirect(request.referrer)
提供您的登录页面,该@app.route('/')
页面存储在index.html
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<form action="/update">
<input type="submit">
</form>
</body>
</html>
此 HTML 页面包含一个提交按钮,该按钮引用/update
. 在上面的 Web 服务器脚本中,此路由已注册到该update_file
函数。在这里,您可以实现您的逻辑以对按钮按下作出反应(在示例中,它将当前时间写入data.txt
服务器上)。由于脚本在服务器上运行,而您的浏览器在客户端上运行,这仅在实际上是同一台机器时才有效,即如果您在本地使用它作为程序的接口。如果要分离服务器和客户端,则需要引入一种传输数据的方法。
现在您可以按如下方式运行 Web 服务器:
$ FLASK_APP=script.py flask run
[...]
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
现在您可以导航到上面指示的地址,您将进入登录页面。按下按钮更新文件:
$ tree .
.
├── data.txt <-- This file gets updated.
├── index.html
├── __pycache__
│ └── script.cpython-38.pyc
└── script.py
推荐阅读
- sql - 获取Oracle分层查询中的所有子路径
- javascript - 从反应数组中删除项目(卡)
- functional-testing - 如何在 appbuild 上测试模型级触发器?
- python - 将 Spyder 升级到 4.0.1 时出错:ModuleNotFoundError: No module named 'IPython.core.inputtransformer2'
- android - 如何在 JNI 中编辑 jobjectArray 并将其传递回 Java
- amazon-web-services - 如何使 ip 指向 AWS 上的其他 ip 和端口(来自两个 apache 虚拟主机)
- javascript - 我可以在 JavaScript 中声明变量的地方
- electron - 在 Electron 的“appData”中写入文件。在哪里添加 import { app } from "electron";?
- docusignapi - DocuSign API 方法信封.listStatusChanges 不显示共享给我的用户的信封
- ios - 如何让我的 UIButton 标题有一些填充?