当前位置:首页>python>Python之Flask开发框架(第一篇)

Python之Flask开发框架(第一篇)

  • 2026-09-02 19:26:24
Python之Flask开发框架(第一篇)

本文聚焦于 Flask 的基础入门,涵盖安装、第一个应用、基本概念、项目结构、路由与视图函数。

引言

Flask 是一个使用 Python 编写的轻量级 Web 应用框架。它被设计为“微型”框架,但并不意味着它功能薄弱;相反,Flask 提供了构建 Web 应用所需的核心组件,同时保持了极高的灵活性和可扩展性。对于初学者来说,Flask 的学习曲线平缓,能让你快速理解 Web 开发的核心概念;对于高级开发者,Flask 又能通过丰富的扩展支持复杂应用的开发。

本教程将带你从零开始,完成 Flask 的安装,创建第一个 Flask 应用,并深入解析 Flask 的基本概念、项目结构、路由与视图函数。


1. Flask 安装

在开始之前,请确保你的电脑上已经安装了 Python 3.8 或更高版本。推荐使用虚拟环境来隔离项目依赖。

1.1 创建虚拟环境

# 在项目目录下执行
python -m venv venv

1.2 激活虚拟环境

  • Windows
    :
    venv\Scripts\activate
  • macOS / Linux
    :
    source venv/bin/activate

1.3 安装 Flask

pip install flask

安装完成后,可以通过以下命令验证是否成功:

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

如果正确输出版本号(如 2.3.x),说明安装成功。


2. Flask 第一个应用

我们来创建一个最简单的 Flask 应用,只需几行代码。

2.1 创建 app.py

from flask import Flask

# 创建 Flask 实例
app = Flask(__name__)

# 定义路由与视图函数
@app.route('/')
defhello():
return'Hello, World!'

# 启动应用
if __name__ =='__main__':
    app.run(debug=True)

2.2 运行应用

python app.py

终端会输出类似以下内容:

 * Serving Flask app 'app'
 * Debug mode: on
 * Running on http://127.0.0.1:5000 (Press CTRL+C to quit)

打开浏览器访问 http://127.0.0.1:5000,你将看到 Hello, World!。

2.3 代码解析

  • Flask(__name__)
    :创建一个 Flask 应用实例。__name__ 是当前模块的名称,Flask 用它来定位模板和静态文件的位置。
  • @app.route('/')
    :这是一个装饰器,用于将 URL 路径 / 与下面的函数绑定。当用户访问根路径时,Flask 会调用该函数。
  • return 'Hello, World!'
    :视图函数返回的字符串将作为 HTTP 响应体发送给客户端。
  • app.run(debug=True)
    :启动内置的开发服务器。debug=True 开启调试模式,代码修改后服务器会自动重启,并在出错时显示详细的错误页面。

3. Flask 基本概念

在深入开发之前,我们需要理解 Flask 中的几个核心概念。

3.1 应用(Application)

Flask 应用是 Flask 类的一个实例。它负责接收 HTTP 请求,根据路由规则分发到对应的视图函数,并将响应返回给客户端。

3.2 路由(Route)

路由是将 URL 映射到 Python 函数的机制。Flask 使用 @app.route 装饰器来定义路由。路由不仅可以匹配静态路径,还可以包含动态部分。

@app.route('/user/<username>')
defshow_user(username):
returnf'User: {username}'

3.3 视图函数(View Function)

视图函数是处理请求并返回响应的函数。它可以是普通的 Python 函数,其返回值会自动转换为 HTTP 响应对象。

3.4 请求(Request)

当客户端发送请求时,Flask 会创建一个 request 对象,其中包含了请求的所有信息(如请求头、表单数据、查询参数等)。通过 from flask import request 导入后即可在视图函数中使用。

3.5 响应(Response)

视图函数的返回值可以是字符串、字典、元组或 Response 对象。Flask 会自动将其转换为一个标准的 HTTP 响应。

# 返回字符串
return'Hello'

# 返回状态码
return'Not Found',404

# 返回字典(自动转为 JSON)
return{'key':'value'}

4. Flask 项目结构

随着项目规模增长,良好的项目结构至关重要。这里介绍一种常见的 Flask 项目布局,即使是一个简单应用,也建议遵循这种结构,以便将来扩展。

my_flask_project/
├── app/
│   ├── __init__.py      # 应用工厂
│   ├── routes.py        # 路由与视图
│   ├── models.py        # 数据模型
│   ├── forms.py         # 表单类
│   ├── templates/       # 模板文件
│   └── static/          # 静态文件(CSS, JS, 图片)
├── config.py            # 配置文件
├── run.py               # 启动入口
└── requirements.txt     # 依赖列表

4.1 使用应用工厂

app/__init__.py 中定义一个函数,用于创建应用实例。这样做可以方便地加载不同配置、进行测试。

from flask import Flask

defcreate_app(config_class=None):
    app = Flask(__name__)

if config_class:
        app.config.from_object(config_class)

# 注册路由
from app import routes
    routes.init_app(app)

return app

4.2 分离路由

将路由定义放在 routes.py 中,并通过 init_app 函数注册到应用上。

# app/routes.py
definit_app(app):
@app.route('/')
defindex():
return'Hello from structured app!'

4.3 启动文件

run.py 作为项目启动入口:

from app import create_app

app = create_app()

if __name__ =='__main__':
    app.run(debug=True)

5. Flask 路由详解

路由是 Web 应用的入口。Flask 的路由系统灵活而强大。

5.1 基本路由

@app.route('/')
defindex():
return'Home'

@app.route('/about')
defabout():
return'About'

5.2 动态路由

在 URL 中使用 <variable> 来捕获路径中的值。默认类型为 string。

@app.route('/user/<username>')
defprofile(username):
returnf'Hello, {username}'

Flask 支持多种转换器:

转换器
说明
string
默认,匹配除 / 外的任意字符串
int
匹配整数
float
匹配浮点数
path
匹配包含 / 的字符串
uuid
匹配 UUID 字符串
@app.route('/post/<int:post_id>')
defshow_post(post_id):
returnf'Post ID: {post_id}'

5.3 HTTP 方法

路由默认只响应 GET 请求。可以通过 methods 参数指定支持的 HTTP 方法。

from flask import request

@app.route('/login', methods=['GET','POST'])
deflogin():
if request.method =='POST':
return'处理登录'
else:
return'显示登录表单'

5.4 路由构建(URL 反向生成)

使用 url_for 函数可以根据视图函数名生成 URL,避免硬编码。

from flask import url_for

@app.route('/')
defindex():
    login_url = url_for('login')# 结果为 '/login'
returnf'Login at {login_url}'

对于动态路由:

url_for('profile', username='alice')# 结果为 '/user/alice'

6. Flask 视图函数深入

视图函数是应用的核心逻辑所在,理解其返回值与请求处理机制十分重要。

6.1 返回 JSON 数据

在构建 API 时,常需要返回 JSON。Flask 提供了 jsonify 函数,它能自动设置正确的 Content-Type 并返回 JSON。

from flask import jsonify

@app.route('/api/user')
defapi_user():
return jsonify({'name':'Alice','age':30})

6.2 重定向

使用 redirect 函数可以重定向到其他 URL。

from flask import redirect, url_for

@app.route('/old')
defold_page():
return redirect(url_for('new_page'))

6.3 中止请求

使用 abort 函数可以提前终止请求并返回指定的 HTTP 错误码。

from flask import abort

@app.route('/secret')
defsecret():
ifnot user_authorized():
        abort(403)# 返回 403 Forbidden
return'Secret content'

6.4 请求对象

request 对象包含了当前请求的所有信息。常用属性:

from flask import request

@app.route('/submit', methods=['POST'])
defsubmit():
# 获取表单数据
    name = request.form.get('name')

# 获取查询参数(GET 参数)
    page = request.args.get('page', default=1,type=int)

# 获取 JSON 数据
    data = request.get_json()

# 获取请求头
    user_agent = request.headers.get('User-Agent')

return'OK'

6.5 会话(Session)

Flask 提供了会话功能,用于在多次请求之间保存用户数据。会话数据默认存储在客户端的加密 cookie 中。

from flask import session

app.secret_key ='your-secret-key'# 必须设置,用于签名

@app.route('/set')
defset_session():
    session['user']='alice'
return'Session set'

@app.route('/get')
defget_session():
    user = session.get('user','Guest')
returnf'User: {user}'

总结

本篇教程我们完成了以下内容:

  1. 安装 Flask
    :使用虚拟环境隔离项目,并通过 pip 安装。
  2. 第一个应用
    :创建了最简单的“Hello, World!”应用,并解析了各部分的含义。
  3. 基本概念
    :介绍了应用、路由、视图函数、请求与响应的核心概念。
  4. 项目结构
    :讲解了如何组织 Flask 项目,并介绍了应用工厂模式。
  5. 路由详解
    :包括基本路由、动态路由、HTTP 方法、url_for 反向生成。
  6. 视图函数深入
    :涵盖了返回 JSON、重定向、请求对象、会话等常用操作。

这些知识构成了 Flask 开发的基础,下一篇教程中,我们将深入探讨 模板渲染、表单处理 和 数据库操作,带你构建功能更完整的 Web 应用。

欢迎关注公众号,感谢对文章的点赞分享喜欢,冉成未来会持续更新前后端开发技术、人工智能技术、IT相关的文章及学习经验、知识分享,未来虽然充满着不确定性,但我们可以不断提升自己,不断为未来做准备,让未来更好的自己成就更美好的未来。

Python之FastAPI 开发知识(第五篇)

Python之FastAPI 开发知识(第四篇)

FastAPI 开发知识(第三篇)

FastAPI 开发知识(第二篇)

FastAPI 开发知识(第一篇)

Django 基础入门教程(第五篇)

Django 基础入门教程(第四篇)

Django 基础入门教程(第三篇)

 Django 基础入门教程(第二篇)

Django 基础入门教程(第一篇)

Python基础系列 | Python之PyQt5基础知识(五)

Python基础系列 | Python之PyQt5基础知识(四)

Python基础系列 | Python之PyQt5基础知识(三)

Python基础系列 | Python之PyQt5基础知识(二)

Python基础系列 | Python之PyQt5基础知识(一)

Python基础系列 | Scrapy框架详细解析

Python基础 | Python之Selenium测试工具集

Python基础系列 | Python爬虫技术(二)

Python基础系列 | Python爬虫技术(一)

Python基础系列 | Python设置pip镜像源

Python基础系列|Python基础知识(六)

Python基础系列|Python基础知识(五)

Python基础系列|Python基础知识(四)

Python基础系列|Python基础知识(三)

Python基础系列|Python基础知识(二)

Python基础系列|Python基础知识(一)

python中列表的处理

Python 基础语法入门:从零开始学习 Python

Windows环境下部署 Python 项目

干货|AI人工智能简介及python环境搭建

最新文章

随机文章