如何在Flask网页中获取用户输入并运行自定义Python脚本?
看起来你已经搭好了Flask的基础框架,接下来要实现“用户输入→传入Python脚本→返回结果”的流程其实很直观,我给你一步步拆解:
第一步:创建前端表单模板
在你的项目根目录下新建一个templates文件夹(Flask默认会读取这个目录里的模板文件),然后创建index.html文件,用来展示输入表单和结果:
<!DOCTYPE html> <html> <head> <title>我的查询工具</title> </head> <body> <h1>请输入查询内容</h1> <!-- 表单用POST方法提交到当前路由 --> <form method="POST"> <input type="text" name="user_input" placeholder="在这里输入内容..." required style="padding:8px; width:300px;"> <button type="submit" style="padding:8px 16px;">执行查询</button> </form> <!-- 如果有执行结果就展示出来 --> {% if result %} <div style="margin-top:20px;"> <h2>执行结果:</h2> <pre style="background:#f5f5f5; padding:10px; border-radius:4px;">{{ result }}</pre> </div> {% endif %} </body> </html>
第二步:修改Flask路由,处理用户输入
接下来调整你的Flask主代码,添加一个支持GET/POST方法的路由,用来渲染表单、接收输入并调用你的脚本逻辑:
from flask import Flask, render_template, redirect, request, url_for import json import connect import requests from elasticsearch import Elasticsearch app = Flask(__name__) def elastic_search(text): # 保留你原来的elastic_search实现逻辑 es = Elasticsearch(['10.0.0.9:9200', '10....']) # 比如你的查询代码: # res = es.search(index="your_index", query={"match": {"content": text}}) # return res @app.route('/', methods=['GET', 'POST']) def index(): result = None if request.method == 'POST': # 从表单中获取用户输入的内容 user_input = request.form.get('user_input', '').strip() if user_input: try: # 调用你的Python脚本函数(这里以elastic_search为例) script_result = elastic_search(user_input) # 将结果转为格式化的JSON字符串,方便页面展示 result = json.dumps(script_result, indent=2, ensure_ascii=False) except Exception as e: # 捕获执行异常,返回错误信息给用户 result = f"脚本执行出错: {str(e)}" # 渲染页面并传递结果 return render_template('index.html', result=result) if __name__ == '__main__': app.run(debug=True) # 开发环境用调试模式,修改代码会自动重启
第三步:测试运行
现在启动你的Flask应用,访问http://localhost:5000就能看到输入界面了。输入内容提交后,Flask会把输入传给你的elastic_search函数执行,最终将结果展示在页面上。
额外小提示
- 如果你的核心逻辑在单独的脚本文件里(比如
connect.py),直接导入并调用对应函数即可,比如connect.your_function(user_input)。 - 调试模式
debug=True仅限开发阶段使用,上线部署时一定要关闭。 - 如果需要支持多行文本输入,可以把表单的
input换成textarea控件;如果要处理文件上传,可使用request.files获取文件内容。
内容的提问来源于stack exchange,提问作者point5
相关产品推荐
相关产品推荐

