
本文介绍如何使用 flask 框架将 python 脚本的运行结果(如搜索结果列表)安全、高效地嵌入 html 页面,通过模板渲染实现前后端分离式动态输出。
本文介绍如何使用 flask 框架将 python 脚本的运行结果(如搜索结果列表)安全、高效地嵌入 html 页面,通过模板渲染实现前后端分离式动态输出。
在 Python Web 开发中,将程序计算或抓取的结果(例如 Google 搜索前 10 条链接及标题)直观展示给用户,最常用且推荐的方式是借助 Flask + Jinja2 模板引擎。它无需直接拼接 HTML 字符串,避免 XSS 风险,同时保持逻辑清晰、易于维护。
✅ 基础实现步骤
-
安装 Flask(如未安装):
pip install flask
-
创建主应用文件
app.py:from flask import Flask, render_template app = Flask(__name__) @app.route('/search') def search(): # 示例:模拟获取搜索结果(实际中可调用 requests + BeautifulSoup / googlesearch-python 等) results = [ {"title": "Flask Documentation", "url": "https://flask.palletsprojects.com/"}, {"title": "Jinja2 Template Docs", "url": "https://jinja.palletsprojects.com/"}, {"title": "Python Official Website", "url": "https://www.python.org/"} ] return render_template('results.html', results=results) if __name__ == '__main__': app.run(debug=True) # 开发时启用调试模式 -
创建模板文件
templates/results.html(注意目录结构):立即学习“Python免费学习笔记(深入)”;
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>搜索结果</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; margin: 2rem; } a { color: #1a0dab; text-decoration: none; } a:hover { text-decoration: underline; } li { margin: 0.5rem 0; } </style> </head> <body> <h1>? 搜索结果(共 {{ results|length }} 条)</h1> {% if results %} <ul> {% for item in results %} <li> <strong><a href="{{ item.url }}" target="_blank">{{ item.title }}</a></strong><br> <small>{{ item.url }}</small> </li> {% endfor %} </ul> {% else %} <p>暂无结果,请检查搜索逻辑。</p> {% endif %} </body> </html>
⚠️ 注意事项:
- 模板文件必须放在项目根目录下的
templates/文件夹中(Flask 默认查找路径);- 使用
{{ item.url | safe }}仅在确认内容绝对可信时才添加|safe过滤器,否则 Jinja2 会自动转义 HTML 特殊字符,防止 XSS;- 生产环境请禁用
debug=True,并使用 WSGI 服务器(如 Gunicorn)部署;- 若需支持用户输入关键词(如
/search?q=python),可在路由中添加参数:@app.route('/search')→@app.route('/search')并读取request.args.get('q')。
✅ 扩展建议(进阶)
- 结合
requests和googlesearch-python库实现真实搜索(注意遵守 robots.txt 及 API 使用条款); - 添加分页、加载状态、错误提示(如
try/except捕获网络异常后传入error变量至模板); - 使用静态文件(CSS/JS)增强页面交互性,存放于
static/目录下。
通过以上方式,你不仅能将 Python 的数据“输出”到网页,更能构建出结构规范、安全可靠、易于迭代的轻量级 Web 工具——这正是 Flask 作为微框架的核心价值所在。



















