news 2026/3/13 6:46:52

【Python】Flask 2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python】Flask 2

Flask 核心知识点速查手册

📌 基础篇

1. Flask 应用结构

fromflaskimportFlask app=Flask(__name__)# 创建应用实例@app.route("/")# 路由装饰器defindex():return"Hello World"if__name__=="__main__":app.run(debug=True)# 启动服务器

2. 路由系统

# 基础路由@app.route("/")# 动态路由@app.route("/user/<username>")@app.route("/post/<int:id>")# 多方法支持@app.route("/api",methods=["GET","POST"])

3. 请求处理

fromflaskimportrequest# 获取请求数据request.method# 请求方法request.args# GET参数request.form# 表单数据request.json# JSON数据request.headers# 请求头

4. 响应处理

# 返回字符串return"文本"# 返回JSONreturn{"key":"value"}# Flask自动转为JSON# 自定义状态码returnjsonify(data),201# 重定向fromflaskimportredirectreturnredirect("/new-url")

📌 模板篇

5. 模板渲染

fromflaskimportrender_template# 渲染模板并传参returnrender_template("index.html",name="John",items=items)

6. Jinja2 模板语法

<!-- 变量 -->{{ variable }}<!-- 循环 -->{% for item in items %} {{ item }} {% endfor %}<!-- 条件 -->{% if condition %}<p>条件成立</p>{% endif %}<!-- 安全输出HTML -->{{ html_content|safe }}

7. 模板继承

<!-- base.html --><html><body>{% block content %}{% endblock %}</body></html><!-- child.html -->{% extends "base.html" %} {% block content %}<h1>子页面内容</h1>{% endblock %}

📌 进阶篇

8. 动态路由参数

# 字符串参数@app.route("/<username>")defprofile(username):returnf"用户:{username}"# 类型转换器@app.route("/post/<int:post_id>")# int, float, path, uuid@app.route("/<any(blog,article):section>/<id>")

9. 请求钩子(Middleware)

@app.before_requestdefbefore_each_request():# 每个请求前执行pass@app.after_requestdefafter_each_request(response):# 每个请求后执行returnresponse

10. 错误处理

@app.errorhandler(404)defpage_not_found(error):return"页面不存在",404@app.errorhandler(500)defserver_error(error):return"服务器错误",500

📌 数据篇

11. 处理JSON数据

# 发送JSON请求importrequests requests.post(url,json={"key":"value"})# 接收JSON数据@app.route("/api",methods=["POST"])defapi():data=request.get_json()# 获取JSON数据returnjsonify(data)# 返回JSON响应

12. 表单处理

fromflaskimportrequest@app.route("/submit",methods=["POST"])defsubmit():username=request.form.get("username")password=request.form.get("password")returnf"用户:{username}"

📌 外部API集成

13. 调用外部API

importrequests# GET请求response=requests.get(url,params=params)data=response.json()# POST请求response=requests.post(url,json=data)# 添加请求头headers={"Authorization":"Bearer token"}response=requests.get(url,headers=headers)

14. 错误处理与超时

try:response=requests.get(url,timeout=5)response.raise_for_status()# 检查状态码data=response.json()exceptrequests.Timeout:return"请求超时"exceptrequests.RequestExceptionase:returnf"请求失败:{e}"

📌 项目结构

15. 基础项目结构

项目名称/ ├── app.py # 主应用文件 ├── requirements.txt # 依赖列表 ├── templates/ # 模板目录 │ └── index.html ├── static/ # 静态文件 │ ├── css/ │ ├── js/ │ └── images/ └── README.md

16. requirements.txt 示例

Flask==2.3.3 requests==2.31.0 python-dotenv==1.0.0

📌 实战代码片段

17. 猜数字API

@app.route("/<guess>")defguess_number(guess):try:guess=int(guess)ifguess==41:return{"correct":True,"message":"恭喜!"}return{"correct":False,"message":"再试试"}except:return{"error":"请输入数字"}

18. 待办事项列表

items=[]@app.route("/",methods=["GET","POST"])deftodo():ifrequest.method=="POST":data=request.get_json()items.append(data["item"])returnrender_template("list.html",items=items)

19. 词云生成器

@app.route("/<topic>")defwordcloud(topic):# 获取维基百科内容response=requests.get(f"维基百科API/{topic}")text=response.json()["extract"]# 生成词云wordcloud=WordCloud().generate(text)svg=wordcloud.to_svg()returnrender_template("wordcloud.html",svg=svg)

🎯 核心要点速记

分类关键字用途
应用Flask(__name__)创建应用
路由@app.route()定义URL映射
请求request获取请求数据
响应return,jsonify()返回响应
模板render_template()渲染HTML
模板语法{{ }},{% %}动态内容
动态路由<variable>URL参数捕获
错误处理@app.errorhandler()自定义错误页面
外部调用requests调用API
JSON处理get_json(),jsonify()JSON数据交换

⚡ 一句话总结每个知识点

  1. 创建应用app = Flask(__name__)
  2. 定义路由@app.route("/path")
  3. 处理请求:使用request对象
  4. 返回响应:直接返回或jsonify()
  5. 渲染模板render_template("模板.html", 参数)
  6. 模板变量{{ 变量名 }}显示内容
  7. 模板逻辑{% for %}循环,{% if %}条件
  8. 动态路由@app.route("/<参数名>")
  9. 接收JSONrequest.get_json()
  10. 调用APIrequests.get(url)requests.post()
  11. 错误处理try-except捕获异常
  12. 启动应用app.run(debug=True)

💡 开发流程速查

开发一个新端点

  1. 定义路由:@app.route("/endpoint", methods=["METHOD"])
  2. 创建函数:def function_name():
  3. 获取数据:data = request.get_json()param = request.args.get("key")
  4. 处理逻辑:你的业务代码
  5. 返回响应:return jsonify(result)return render_template(...)

常见状态码

  • 200:成功
  • 201:创建成功
  • 400:请求错误
  • 401:未授权
  • 404:资源不存在
  • 500:服务器错误
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 4:39:46

轻量不代表弱:CSANMT在BLEU评分中超越多个大模型

轻量不代表弱&#xff1a;CSANMT在BLEU评分中超越多个大模型 &#x1f310; AI 智能中英翻译服务 (WebUI API) 在跨语言交流日益频繁的今天&#xff0c;高质量、低延迟的机器翻译系统已成为开发者和企业不可或缺的工具。传统的翻译服务往往依赖大型云端模型&#xff0c;虽然精…

作者头像 李华
网站建设 2026/3/12 14:25:36

浏览器扩展开发:网页划词即时翻译功能实现路径

浏览器扩展开发&#xff1a;网页划词即时翻译功能实现路径 &#x1f4cc; 引言&#xff1a;让翻译更“顺手”的用户体验需求 在日常浏览英文网页时&#xff0c;用户常面临“看得懂但费劲”或“完全看不懂”的困境。虽然已有大量在线翻译工具&#xff08;如谷歌翻译、DeepL&am…

作者头像 李华
网站建设 2026/3/11 16:01:59

8.2 磁悬浮刚性转子动力学:基于磁轴承支承的转子系统建模与稳定性分析

8.2 磁悬浮刚性转子动力学:基于磁轴承支承的转子系统建模与稳定性分析 磁悬浮轴承的最终目标是实现转子在五个受控自由度上的稳定、高性能悬浮与旋转。第5.1节所述的单自由度模型揭示了系统稳定性的基本原理,但实际转子是一个具有质量分布和转动惯量的连续体,其动力学行为远…

作者头像 李华
网站建设 2026/3/13 6:11:19

CSANMT模型在电商产品评论翻译的情感保留

CSANMT模型在电商产品评论翻译的情感保留 &#x1f310; AI 智能中英翻译服务 (WebUI API) 项目背景与业务需求 随着跨境电商的迅猛发展&#xff0c;海量中文产品评论需要被快速、准确地翻译成英文&#xff0c;供海外用户参考。然而&#xff0c;传统机器翻译系统在处理用户生成…

作者头像 李华
网站建设 2026/3/5 22:06:40

如何用CSANMT构建支持历史记录的翻译应用?

如何用CSANMT构建支持历史记录的翻译应用&#xff1f; &#x1f310; AI 智能中英翻译服务 (WebUI API) 在多语言交流日益频繁的今天&#xff0c;高质量、低延迟的自动翻译系统已成为开发者和企业不可或缺的工具。传统的翻译服务往往依赖云端API&#xff0c;存在隐私泄露、网络…

作者头像 李华
网站建设 2026/3/13 7:45:26

10. Linux 系统启动原理

CentOS 7 启动过程 现代计算机系统是硬件与软件的复杂组合。从加电状态开始&#xff0c;到拥有登录提示符的运行中系统&#xff0c; 这需要大量的硬件和软件配合工作。 以下列表从较高层面概述了 CentOS7 启动过程。 计算机接通电源。系统固件&#xff08;现代UEFI或更旧的BIO…

作者头像 李华