news 2026/5/1 7:06:05

【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/4/16 22:06:23

系统编程—在线商城信息查询系统

一、项目概述本文将介绍如何基于 C 语言实现一个简易的在线商城 Web 服务器&#xff0c;该服务器具备用户注册、登录、商品搜索、商品详情展示等核心功能&#xff0c;底层采用 SQLite3 数据库存储数据&#xff0c;同时解决了 SQL 注入、URL 解码等常见 Web 开发问题&#xff0c…

作者头像 李华
网站建设 2026/4/25 10:56:14

CSANMT模型在教育领域的翻译应用案例

CSANMT模型在教育领域的翻译应用案例 &#x1f310; AI 智能中英翻译服务&#xff08;WebUI API&#xff09; 项目背景与教育场景需求 随着全球化教育趋势的加速&#xff0c;语言障碍成为制约国际课程共享、学术交流和双语教学的核心瓶颈。尤其在高等教育与K12国际化课程中…

作者头像 李华
网站建设 2026/4/18 18:49:49

模型压缩技术揭秘:CSANMT如何做到轻量又高性能

模型压缩技术揭秘&#xff1a;CSANMT如何做到轻量又高性能 &#x1f310; AI 智能中英翻译服务&#xff08;WebUI API&#xff09; 在跨语言交流日益频繁的今天&#xff0c;高质量、低延迟的机器翻译系统成为开发者和企业不可或缺的工具。传统的神经机器翻译&#xff08;NMT&a…

作者头像 李华
网站建设 2026/5/1 6:50:31

CSANMT模型在用户反馈翻译的情感分析整合

CSANMT模型在用户反馈翻译的情感分析整合 &#x1f310; AI 智能中英翻译服务&#xff1a;从精准翻译到情感理解的跃迁 随着全球化进程加速&#xff0c;跨语言沟通已成为企业运营、客户服务和产品体验中的关键环节。传统的机器翻译系统虽然解决了“能否翻译”的问题&#xff…

作者头像 李华
网站建设 2026/5/1 6:51:26

M2FP+OpenCV:高级图像处理技巧分享

M2FPOpenCV&#xff1a;高级图像处理技巧分享 &#x1f9e9; M2FP 多人人体解析服务简介 在计算机视觉领域&#xff0c;语义分割是实现精细化图像理解的核心技术之一。而针对人体的语义分割——即人体解析&#xff08;Human Parsing&#xff09;&#xff0c;则进一步将人体细分…

作者头像 李华
网站建设 2026/4/23 15:56:54

CSANMT模型在跨文化交际翻译中的适应性

CSANMT模型在跨文化交际翻译中的适应性 引言&#xff1a;AI 智能中英翻译服务的兴起与挑战 随着全球化进程加速&#xff0c;跨文化交际已成为企业出海、学术交流和内容传播的核心场景。然而&#xff0c;语言障碍始终是信息高效传递的主要瓶颈。传统机器翻译系统&#xff08;如基…

作者头像 李华