当前位置: 首页 > news >正文

python Flask开发基础教程

下面是一份面向初学者的 Flask 实战开发教程,从「跑起来」到「能上线」,循序渐进,偏实战导向。你可以跟着一步步敲代码。


一、Flask 是什么?适合做什么?

Flask​ 是一个用 Python 编写的轻量级 Web 框架,被称为“微框架”:

  • ✅ 核心简单、上手快,适合新手

  • ✅ 自由度高,按需添加插件

  • ✅ 常用于:个人博客、后台接口(API)、小型网站、原型验证

  • ❌ 不适合超大型、强约定项目(那种更适合 Django)

一句话:Flask = 路由 + 请求处理 + 模板渲染 + 扩展生态


二、环境准备(重要)

1. 创建并激活虚拟环境(强烈建议)

# 创建虚拟环境 python -m venv venv # 激活(Windows) venv\Scripts\activate # 激活(Mac / Linux) source venv/bin/activate

激活后,终端前面会出现(venv)

2. 安装 Flask

pip install flask

验证:

python -c "import flask; print(flask.__version__)"

三、第一个 Flask 应用(Hello World)

新建app.py

from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello, Flask!" if __name__ == "__main__": app.run(debug=True)

运行:

python app.py

浏览器访问:http://127.0.0.1:5000/

✅ 你现在已经有一个 Web 服务了。


四、核心概念拆解

1. 路由(Route)

路由决定「URL → 函数」的映射关系。

@app.route("/about") def about(): return "关于页面"
带参数的路由
@app.route("/user/<username>") def user(username): return f"用户名:{username}" @app.route("/post/<int:post_id>") def post(post_id): return f"文章ID:{post_id}"

常见转换器:

  • string(默认)

  • int

  • float

  • path


2. HTTP 请求方法(GET / POST)

from flask import request @app.route("/login", methods=["GET", "POST"]) def login(): if request.method == "POST": username = request.form.get("username") return f"登录成功,欢迎 {username}" return ''' <form method="post"> 用户名:<input name="username"> <button type="submit">登录</button> </form> '''

3. 模板渲染(HTML 页面)

Flask 使用Jinja2​ 模板引擎。

目录结构
project/ ├── app.py └── templates/ └── index.html
app.py
from flask import render_template @app.route("/") def index(): return render_template("index.html", title="首页")
templates/index.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> <h1>{{ title }}</h1> <p>这是我的第一个 Flask 页面</p> </body> </html>
Jinja2 常用语法
{{ 变量 }} {% if 条件 %} ... {% endif %} {% for item in items %} ... {% endfor %}

4. 静态文件(CSS / JS / 图片)

目录结构:

project/ ├── static/ │ ├── css/ │ │ └── style.css │ └── js/ │ └── main.js

HTML 中引用:

<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}"> <script src="{{ url_for('static', filename='js/main.js') }}"></script>

五、JSON API(前后端分离必备)

from flask import jsonify @app.route("/api/users") def api_users(): users = [ {"id": 1, "name": "张三"}, {"id": 2, "name": "李四"} ] return jsonify(users)

访问:http://127.0.0.1:5000/api/users

返回的是标准 JSON。


六、重定向与错误处理

from flask import redirect, url_for, abort @app.route("/redirect") def redirect_demo(): return redirect(url_for("index")) @app.route("/error") def error_demo(): abort(404) @app.errorhandler(404) def page_not_found(e): return "页面不见了(404)", 404

七、项目结构(推荐的中型结构)

flask_project/ ├── app.py # 入口 ├── config.py # 配置 ├── requirements.txt # 依赖 ├── models/ # 数据模型 ├── routes/ # 路由拆分 ├── templates/ # HTML └── static/ # 静态资源

示例:app.py

from flask import Flask from routes.user import user_bp app = Flask(__name__) app.register_blueprint(user_bp) if __name__ == "__main__": app.run(debug=True)

routes/user.py

from flask import Blueprint user_bp = Blueprint("user", __name__, url_prefix="/user") @user_bp.route("/<username>") def profile(username): return f"用户:{username}"

👉Blueprint(蓝图)​ 是 Flask 拆分大型项目的核心工具。


八、数据库入门(Flask + SQLite)

安装扩展:

pip install flask-sqlalchemy

示例:

from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///data.db" db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) with app.app_context(): db.create_all()

九、常见 Flask 扩展(必知)

功能

扩展

ORM

Flask-SQLAlchemy

表单

Flask-WTF

登录

Flask-Login

迁移

Flask-Migrate

跨域

Flask-CORS

接口文档

Flask-RESTful / Flask-OpenAPI


十、调试 & 部署基础

1. Debug 模式

app.run(debug=True)

修改代码会自动重启,报错页面更友好(仅限开发环境)。

2. 生产环境(概念)

  • 不用app.run()

  • 使用Gunicorn / uWSGI + Nginx

  • 关闭 debug

  • 使用环境变量管理配置


十一、一个完整小项目示例(To-Do List)

你可以做一个:

  • /:展示所有待办事项

  • /add:添加事项

  • /delete/<id>:删除事项

  • 使用 SQLite 存储

  • 使用 Bootstrap 美化页面

如果你愿意,我可以一步一步带你写这个 To-Do 项目,从建表到部署。


十二、下一步怎么学?

建议你按这个顺序来:

  1. ✅ 跑通 Hello World

  2. ✅ 学会路由 + 模板

  3. ✅ 写一个 CRUD 小项目(增删改查)

  4. ✅ 引入数据库

  5. ✅ 拆分成 Blueprint

  6. ✅ 学习 RESTful API

  7. ✅ 学习部署(云服务器 / Docker)


如果你告诉我:

  • 💻 你是零基础 / 有一点 Python 基础

  • 🎯 想做网站 / API / 后台管理系统 / 爬虫接口

  • ⏱️ 每天能投入多少时间

我可以给你定制一个7 天或 14 天的 Flask 学习计划,每天只学一点,但能做出东西。

http://www.jsqmd.com/news/1106865/

相关文章:

  • Phalcon Compliance:高性能链上合规引擎,守护 Web3 的信任与增长
  • 2026 年目前哪个 GEO 优化系统功能最全面?
  • 一个没做安全防护的IoT设备,被客户骂了一下午
  • Diablo Edit2:5大核心技术突破重塑暗黑破坏神II角色编辑体验
  • 终极跨平台B站观影指南:让你的游戏机变身视频中心
  • 洛谷-P11403 [RMI 2020] 软盘 / Floppy 题解
  • 高光谱相机全解析:技术分类、主流品牌与选型指南
  • 连锁超市收银系统选什么?四大品牌深度横评与避坑指南
  • Java Stream、File与IO-核心场景实战
  • NifSkope 3D模型编辑器:专业游戏模型处理完全指南
  • 国内物流包装垂直随机振动试验优先选用 GB/T 4857.23-2021 附录 D 说明
  • 【课程设计/毕业设计】基于 SpringBoot 的校园日常行为规范评分归档系统的设计与实现 基于 SpringBoot 的中小学学生品行综合考评管理系统【附源码、数据库、万字文档】
  • 越华环保集团资质元数据治理体系与项目准入校验架构设计
  • 第一章Netty,Selector写入内容过多问题
  • 4-20mA电流环接收器设计与STM32高精度ADC实现
  • .net环境下跨进程、高频率读写数据
  • Windows系统文件AutomaticAppSignInPolicy.dll丢失找不到问题解决
  • React Native 0.86 亮点速览:边到边修复、DevTools 深色模拟、JSI 再增强
  • 技术人转型项目管理:30岁前后如何用PMP完成思维切换
  • 当下游master被污染后,如何与上游master进行同步
  • 计算机Java毕设实战-基于 SpringBoot 的中小学学生德育行为考评系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 科研选题不再受限于抗体缺货,云克隆全链条自研如何支撑百万种衍生资源
  • 免费开源桌面分区神器:5分钟彻底告别杂乱Windows桌面
  • Docker容器的跨节点通信
  • Linux基础文件与目录实操学习笔记
  • 塞尔达传说:旷野之息存档编辑器终极指南 - 5分钟掌握海拉鲁世界修改秘籍
  • 云手机技术详解:原理、自动化 API 实战代码与商用选型指南
  • 说明Svcb到外部服务的通信被打通了!
  • 【毕业设计】基于 SpringBoot 的学生日常表现评分登记管理系统的设计与实现 基于 SpringBoot 的中小学行为规范考核管理系统(源码+文档+远程调试,全bao定制等)
  • 返回主页I WOULD NEVER DIE FOR MY BELIEFS BECAUSE I MIGHT BE WRONG