当前位置: 首页 > 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.gsyq.cn/news/1618837.html

相关文章:

  • Shell脚本精读 · S06-03 | 条件与控制流综合:读 30 行脚本的判断链
  • 高光谱相机全解析:技术分类、主流品牌与选型指南
  • 【课程设计/毕业设计】基于 SpringBoot 的校园日常行为规范评分归档系统的设计与实现 基于 SpringBoot 的中小学学生品行综合考评管理系统【附源码、数据库、万字文档】
  • Windows系统文件AutomaticAppSignInPolicy.dll丢失找不到问题解决
  • 第一章Netty,Selector写入内容过多问题
  • 技术人转型项目管理:30岁前后如何用PMP完成思维切换
  • 免费开源桌面分区神器:5分钟彻底告别杂乱Windows桌面
  • 云手机技术详解:原理、自动化 API 实战代码与商用选型指南
  • 【毕业设计】基于 SpringBoot 的学生日常表现评分登记管理系统的设计与实现 基于 SpringBoot 的中小学行为规范考核管理系统(源码+文档+远程调试,全bao定制等)
  • 3分钟掌握OFD转PDF:免费开源工具Ofd2Pdf完全指南
  • Claude 实战: AI 自动帮你“加班“:/loop 完全指南
  • ISP算法工程师面试--3A之AE篇
  • 陕西市场靠谱的电瓶观光车制造商找哪家
  • 慈溪珠宝定制哪家靠谱
  • 国内可用电商AI作图工具技术横评与选型方案:从实测数据到自动化工作流
  • lru记录的是对象最后一次被命令程序访问的时间,占据的比特数不同的版本有所不同(如4.0版本占24比特,2.6版本占22比特)。
  • LV3296与PIC24HJ256GP610嵌入式数据采集系统设计
  • 3步掌握WeChatMsg:让你的聊天记忆永远留存
  • 七部门力挺“AI一人公司”:风口之下,我们该如何重塑个体的商业价值?
  • 瑞芯微RV1126B开发板(EASY-EAI-PI2) OCR文字识别
  • KES数据库国产化全栈适配与迁移改造落地规范
  • Python实现AES-256加解密:从原理到实战的完整指南
  • 工程现场施工管理系统怎么选?落地避坑实用指南
  • MC74HC165A与PIC32MZ构建高效输入扩展系统
  • 离职前对项目进行复盘
  • 嵌入式条形码识别系统开发与TM4C123优化实践
  • Ansible 遇见 AI:从自动化到智能化的运维新纪元(小白也能懂)
  • 国产升降压突破:ZCC8710对标TPS631000,宽压低功耗双优势
  • AI Collection:3367 个生成式 AI 应用,一个地方全找到
  • 经常遇见的问题--1