授课语音

Flask 框架简介

Flask 是一个轻量级的 Python Web 应用框架,它基于 WSGI(Web Server Gateway Interface)协议,采用了简单且灵活的设计理念。Flask 非常适合开发小型到中型的 Web 应用,并且在大型应用中也能通过插件扩展其功能。

本课将介绍 Flask 框架的核心概念,包括其安装、应用结构以及基本的 Web 开发操作。通过本课,您将掌握使用 Flask 框架开发简单 Web 应用的基础。


1. Flask 框架概述

Flask 是一个基于 Werkzeug 和 Jinja2 的 Web 框架。Werkzeug 提供了 WSGI 实现,而 Jinja2 则是一个现代化的模板引擎。Flask 的设计理念是 "微框架",它只提供核心功能,允许开发者自由选择其他组件(如数据库、认证系统等)。

1.1 Flask 的特点

  • 轻量和灵活:Flask 只提供最基础的 Web 开发功能,开发者可以根据需求自由扩展。
  • 易于上手:Flask 的 API 设计简洁直观,非常适合初学者。
  • 强大的扩展性:Flask 提供丰富的扩展包,支持数据库、表单验证、身份验证、文件上传等常见功能。

2. Flask 安装

2.1 安装 Flask

首先,您需要安装 Flask。推荐使用 Python 的包管理工具 pip 来安装 Flask:

pip install Flask

2.2 验证安装

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

python -m flask --version

您应该会看到类似于以下的信息:

Flask 2.0.1
Werkzeug 2.0.1

3. Flask 项目结构

一个典型的 Flask 项目结构如下:

/my_flask_app
    /templates
    /static
    app.py
    config.py
  • app.py:Flask 应用的入口文件,包含路由和视图函数。
  • config.py:配置文件,存放应用的各种配置(如数据库连接信息)。
  • /templates:存放 HTML 模板文件。
  • /static:存放静态文件(如 CSS、JavaScript、图片等)。

4. Flask 基本应用

4.1 创建一个简单的 Flask 应用

以下是创建一个最基本 Flask 应用的代码示例:

from flask import Flask

# 创建一个 Flask 应用实例
app = Flask(__name__)

# 定义一个路由,处理根路径请求
@app.route('/')
def hello_world():
    return 'Hello, World!'

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

4.2 代码解析

  • Flask(__name__):创建一个 Flask 应用实例,__name__ 是当前 Python 模块的名字,Flask 会根据该信息来确定应用的根路径。
  • @app.route('/'):定义一个路由,当用户访问根路径 / 时,调用 hello_world 函数并返回响应。
  • app.run(debug=True):启动应用并启用调试模式,这样每次代码修改后会自动重启应用并显示详细错误信息。

4.3 运行应用

保存代码为 app.py,在命令行中运行以下命令启动 Flask 应用:

python app.py

浏览器访问 http://127.0.0.1:5000/,您将看到 "Hello, World!" 的输出。


5. Flask 路由和视图函数

Flask 使用装饰器来定义路由,路由用于将 URL 与视图函数(即处理请求的函数)关联起来。通过不同的 HTTP 方法(如 GET、POST)来处理客户端请求。

5.1 定义多个路由

您可以为不同的 URL 路径定义多个视图函数。例如:

@app.route('/')
def home():
    return 'Welcome to the Flask App!'

@app.route('/about')
def about():
    return 'This is a simple Flask application.'

5.2 路由参数

Flask 支持通过路由动态传递参数。例如,下面的代码会捕获 URL 中的 username 参数:

@app.route('/hello/<username>')
def greet_user(username):
    return f'Hello, {username}!'

如果用户访问 http://127.0.0.1:5000/hello/John,将返回 "Hello, John!"。


6. Flask 模板引擎 - Jinja2

Flask 使用 Jinja2 作为模板引擎,允许开发者在 HTML 文件中嵌入 Python 代码。模板引擎通过控制结构(如循环、条件语句)使得 HTML 动态生成。

6.1 渲染模板

Flask 提供了 render_template 函数来渲染模板文件。例如,您可以创建一个模板文件 hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello {{ name }}</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

然后在视图函数中使用 render_template 渲染该模板:

from flask import render_template

@app.route('/hello/<name>')
def hello_name(name):
    return render_template('hello.html', name=name)

如果用户访问 http://127.0.0.1:5000/hello/John,将显示 "Hello, John!"。


7. 总结

通过本课的学习,您已经掌握了 Flask 框架的基本概念和用法,包括如何创建一个简单的 Flask 应用、定义路由和视图函数、使用模板渲染动态 HTML 页面等。Flask 的简单易用使其成为快速开发 Web 应用的理想选择。接下来,您可以进一步学习 Flask 的扩展功能,如数据库操作、表单处理和认证等。

去1:1私密咨询

系列课程: