如何使用Python与Flask框架接收Jotform提交的表单数据
Python + Flask 接收Jotform Webhook推送实现方案
前置依赖安装
首先安装Flask框架,直接执行命令:pip install flask
完整可运行代码
from flask import Flask, request import json app = Flask(__name__) # 建议给webhook路径加随机字符串后缀,避免被恶意扫描探测 RECEIVE_ROUTE = "/jotform/hook/7f9d2x8z" @app.route(RECEIVE_ROUTE, methods=["POST"]) def handle_jotform_submit(): try: # Jotform默认以form-data格式推送提交数据 form_submit = request.form.to_dict() # 如果后台配置了推送原始JSON格式,替换为下面的解析代码 # form_submit = request.get_json(force=True) # 以下位置编写自定义业务逻辑 # 例如数据落库、统计分析、触发消息通知等 print("收到表单提交数据:\n", json.dumps(form_submit, ensure_ascii=False, indent=2)) # 必须返回200状态码,否则Jotform会判定推送失败,触发多次重试 return {"code": 0, "msg": "ok"}, 200 except Exception as e: print(f"处理提交数据异常:{str(e)}") return {"code": -1, "msg": str(e)}, 500 if __name__ == "__main__": # 本地调试运行配置,生产环境请替换为gunicorn等WSGI服务部署 app.run(host="0.0.0.0", port=8000, debug=False)
配置注意事项
- Jotform后台配置Webhook时,需填入服务的公网可访问完整地址,格式为
https://你的服务域名/jotform/hook/7f9d2x8z - 本地调试无公网IP时,可使用内网穿透工具临时映射本地端口,验证接收逻辑
- 配置完成后可直接用平台自带的测试发送功能,验证接口连通性
- 若表单包含文件上传字段,推送数据中会直接携带文件的可访问链接,无需额外解析二进制上传流
常见问题处理
- 重复推送:如果接口未返回200状态码,Jotform会在24小时内多次重试推送同一条记录,业务侧可使用数据中携带的
submission_id做幂等去重,避免重复处理 - 请求伪造:路径后缀的随机字符串可作为简易身份校验,安全要求更高的场景可额外结合请求来源IP白名单做拦截
- 乱码问题:解析中文等非ASCII内容时,确保代码中统一使用UTF-8编码处理即可
内容的提问来源于stack exchange,提问作者Cesco
相关产品推荐
相关产品推荐

