news 2026/4/15 6:53:10

Python从入门到精通(第52章):Flask快速入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python从入门到精通(第52章):Flask快速入门

开头导语

Flask 是 Python Web 框架的"Hello World"。它小到几行代码就能跑起来,大到能支撑一个中型互联网应用。很多人学 Flask 的方式是找一个小项目跑起来,然后往里面堆代码——这种学法容易,但基础不扎实。本章从 Flask 的核心概念讲起:路由、视图函数、请求、响应、Blueprint,把每个知识点讲透,再动手写一个完整的 RESTful API。读完本章后,你能理解 Flask 的工作原理,而不是只会复制粘贴代码。

章节摘要

Flask 是 Python 轻量级 Web 框架,核心由 Werkzeug(WSGI 工具箱)和 Jinja2(模板引擎)组成。最小应用只需要几行代码:实例化 Flask、定义路由、编写视图函数。@app.route装饰器把 URL 绑定到函数,函数返回值就是响应内容。请求对象request封装了客户端请求的所有信息。Blueprint 把大型应用拆分成多个模块。app.run() 是开发服务器,生产环境用 gunicorn。

关键词

Flask、路由、视图函数、request、response、Blueprint、app.run、gunicorn、Jinja2

学习目标

  • 理解 Flask 的请求-响应模型
  • 掌握路由定义和视图函数编写
  • 掌握 request 和 response 的用法
  • 能够用 Blueprint 组织大型应用
  • 理解开发服务器和生产服务器的区别

先修知识

  • HTTP 协议基础知识(第51章)
  • Python 基础语法、装饰器

环境准备

pipinstallflask gunicorn

Flask 的请求-响应模型

Flask 的工作流程极其简单:客户端发来请求 → Flask 调用对应视图函数 → 视图函数返回响应 → Flask 发回响应

这个模型的关键是路由:把 URL 映射到视图函数。比如用户访问http://example.com/user/1,Flask 找到@app.route('/user/<int:user_id>')对应的视图函数,把user_id=1传进去,视图函数处理后返回响应。

最小 Flask 应用

fromflaskimportFlask app=Flask(__name__)@app.route("/")defindex():return"<h1>Hello Flask</h1>"@app.route("/about")defabout():return"<p>关于页面</p>"if__name__=="__main__":app.run(debug=True,host="0.0.0.0",port=8000)

运行后在浏览器访问http://localhost:8000/http://localhost:8000/about就能看到页面。

路由详解

路由参数

URL 中用<type:name>定义路径参数,Flask 会自动做类型转换:

@app.route("/user/<int:user_id>")defget_user(user_id):"""获取用户信息,user_id 是整数"""return{"user_id":user_id,"name":"Ada"}@app.route("/post/<slug>")defget_post(slug):"""获取文章,slug 是字符串"""return{"slug":slug}@app.route("/date/<int:year>/<int:month>")defget_archive(year,month):"""按年月归档"""return{"year":year,"month":month}

支持的类型转换器:

转换器类型示例匹配
string(默认)字符串(不含//user/ada
int整数/user/123
float浮点数/rate/3.14
path路径(含//files/a/b/c
uuidUUID/item/550e8400-...

HTTP 方法

路由默认只接受 GET 请求。用methods参数指定允许的方法:

@app.route("/items",methods=["GET"])deflist_items():"""列表(查)"""return{"items":["A","B","C"]}@app.route("/items",methods=["POST"])defcreate_item():"""创建(增)"""data=request.get_json()return{"created":data},201@app.route("/items/<int:item_id>",methods=["PUT"])defupdate_item(item_id):"""更新(改)"""data=request.get_json()return{"updated":item_id,"data":data}@app.route("/items/<int:item_id>"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 6:50:11

系统部署自动化

系统部署自动化&#xff1a;提升效率的关键利器 在数字化转型的浪潮中&#xff0c;系统部署自动化已成为企业提升运维效率、降低人为错误的核心技术。传统的手动部署方式不仅耗时耗力&#xff0c;还容易因操作失误导致系统故障。而自动化部署通过脚本和工具实现一键式操作&…

作者头像 李华
网站建设 2026/4/15 6:49:16

Android 系统 Activity Embedding 架构解析与工程实践

我们是由枫哥组建的IT技术团队&#xff0c;成立于2017年&#xff0c;致力于帮助IT从业者提供实力&#xff0c;成功入职理想企业&#xff0c;我们提供一对一学习辅导&#xff0c;由知名大厂导师指导&#xff0c;分享Java技术、参与项目实战等服务&#xff0c;并为学员定制职业规…

作者头像 李华
网站建设 2026/4/15 6:46:27

org.openpnp.vision.pipeline.stages.DetectLinesHough

文章目录org.openpnp.vision.pipeline.stages.DetectLinesHough功能参数例子测试图像generate_line_test_image.pycv-pipeline效果ENDorg.openpnp.vision.pipeline.stages.DetectLinesHough 功能 在图像中检测直线段 在DetectLinesHough之前&#xff0c;需要执行DetectEdgesC…

作者头像 李华
网站建设 2026/4/15 6:43:13

终极AMD硬件调试革命:3大技术突破让系统稳定性提升5倍

终极AMD硬件调试革命&#xff1a;3大技术突破让系统稳定性提升5倍 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

作者头像 李华