如何从服务器端HTML按钮导入数据到客户端Windows运行的Python脚本
解决方案
你不需要在客户端运行的Flask服务里使用模板功能,也不需要维护本地template文件夹,核心需求本质是远端Web页面和本地Python脚本的HTTP通信,按以下步骤实现即可:
实现思路
Flask的模板功能是用来让服务端渲染返回网页的,你当前的场景里网页已经部署在远端Web服务器,本地Flask只需要提供数据接收接口,完全不需要调用render_template相关方法,也就不会触发Flask对本地template文件夹的检查。
具体操作步骤
- 第一步:编写客户端Windows设备上运行的Flask代码,仅保留数据接收逻辑即可:
from flask import Flask, request # 解决跨域问题需要安装flask-cors包,不需要可以去掉 from flask_cors import CORS app = Flask(__name__) # 允许跨域请求,不需要可以去掉 CORS(app) @app.route('/receive_data', methods=['POST']) def receive_data(): # 获取Web端传递的字符串 input_str = request.json.get('target_str', '') # 这里写你拿到字符串之后的业务逻辑 print(f"接收到的字符串:{input_str}") return {"code": 200, "msg": "接收成功"} if __name__ == '__main__': # 本地监听指定端口 app.run(host='127.0.0.1', port=6789)
- 第二步:修改远端Web服务器上的HTML页面JS逻辑,用户点击按钮生成字符串后直接调用本地Flask接口:
document.querySelector('#generate-btn').addEventListener('click', function() { // 你自己的生成字符串逻辑 const generatedStr = '你的业务生成的字符串'; // 调用本地Flask接口传数据 fetch('http://127.0.0.1:6789/receive_data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ target_str: generatedStr }) }).then(res => res.json()).then(res => { if(res.code === 200) alert('数据已同步到本地客户端'); }).catch(err => { alert('请确认本地Python脚本已正常启动'); }) })
可选优化方案
如果需要支持非本地局域网的场景,可调整为数据中转模式:远端Web服务器先存储用户生成的字符串,本地Python脚本定时调用远端服务器的接口拉取新生成的字符串即可,不需要本地暴露端口。
内容的提问来源于stack exchange,提问作者zeerak.nu7
相关产品推荐
相关产品推荐

