Coursera 笔记

Module 02 · Web App Deployment using Flask

Deploying Web Apps using Flask使用 Flask 部署 Web 应用程序

Coursera ↗

欢迎来到 使用 Flask 部署 Web 应用程序 课程。

观看本视频后,您将能够:

  • ✅ 描述 Flask 的特性
  • ✅ 安装 Flask
  • ✅ 使用 Flask 创建并部署 Python Web 应用程序

什么是 Flask?

Flask 是一个微框架(Micro-framework),用于使用 Python 快速轻松地创建 Web 应用程序。

Flask 与 CRUD 操作

Flask 支持 CRUD(即创建 Create、读取 Read、更新 Update 和删除 Delete)请求。它是通过处理 POST、PUT、GET、PATCH 和 DELETE 请求来实现的。

以下是 HTTP 请求与 CRUD 操作的对应关系:

HTTP 请求方法 用途描述 常见应用场景
POST 创建对象或数据 创建用户
GET 从服务器读取数据 读取页面或信息
PUT / PATCH 更新现有数据或对象 修改用户信息
DELETE 删除现有数据或对象 删除记录

📝 注意: 在大多数 Web 应用程序中,通常倾向于使用 POST 来进行对象的创建、更新和删除,而使用 GET 进行读取。


创建 Flask Web 应用程序步骤

接下来,我们将逐步演示如何构建一个返回 "Hello World" 的 Web 应用程序。

第一步:安装 Flask

首先,使用 Python 的标准包管理器 pip 安装 Flask 包。这将获取 Flask 的最新版本。

  • 命令: pip install flask

第二步:导入 Flask 模块

安装完成后,需要从 flask 包中导入 Flask 类。

第三步:实例化 Flask 类

创建一个 Flask 类的对象作为 Web 应用程序,并将其命名(例如 app)。

  • 代码示例: app = Flask("MyFirstWebApplication")
    • 注:大多数应用程序为了清晰起见使用引用名称 app,但这只是一个引用名,您可以使用任何其他名称。

第四步:定义路由(Route)

定义根目录以及访问该根目录时将调用的方法。

  • 代码示例: @myapp.route('/')
    • 注:在此示例中未指定 GET 或 POST。当未指定请求类型时,默认使用 GET 请求。因此,该端点现在可以服务于针对根目录的 GET 请求。

第五步:定义函数

定义当系统访问上一步中定义的 API 端点时调用的方法(例如 hello 方法)。

  • 代码示例:
    Python
    def hello():
        return 'Hello World!'
    
    
    该方法不接受参数,并返回字符串 "Hello World!"。

第六步:运行应用程序

添加一个条件,确保仅当 name 属性设置为 main 时才运行 Web 应用程序(默认情况下,除非显式更改,否则 name 均设置为 main)。

  • 代码示例: app.run(debug=True)
    • 注:要启动开发环境中的服务器,请将代码保存在 Python 文件中,并像运行其他 Python 应用程序一样运行它。

运行与访问

当 Web 应用程序服务器启动时,它会提供应用程序可访问的 IP 地址和端口。

  • 访问方式: 打开浏览器并连接到服务器输出中显示的端点(通常是 127.0.0.1:5000)。
  • 结果: 您将看到 Web 服务器应用程序返回的字符串 "Hello World"。

模板(Templates)与静态文件(Static Files)

模板是 Web 应用程序提供的预创建 HTML 页面。

  • 类型: 可以是静态的,也可以是动态的。
  • 位置: 默认情况下,Flask 应用程序会在根目录下的名为 templates 的目录中查找模板。

静态文件包括图像、样式表(CSS)或 JavaScript 文件。

  • 位置: 存储在根目录名为 static 的文件夹中。
  • 渲染方式: 静态页面按原样渲染。

动态页面通常包含针对每个请求动态填充的信息。

  • 这些页面通常基于作为参数传递的值。
  • 参数可以通过 URL 传递,也可以作为请求参数传递。

Flask 应用程序示例解析

让我们看一个更完整的 Flask 应用程序示例:

1. 导入与实例化

Python

from flask import Flask, render_template, request

# 实例化 Flask 并显式设置静态文件夹
myapp = Flask("MyFirstApplication", static_folder="static")

  • 注:默认文件夹名为 static,但只要显式设置,您可以将静态内容放在不同名称的目录中。

2. 应用程序的三个端点

此 Web 应用程序包含三个端点:

A. 静态 HTML 页面 (/sample)

渲染一个包含图像(源自静态目录)的静态 HTML 页面。

Python

@myapp.route('/sample')
def get_sample_html():
    return render_template('sample.html')

B. URL 参数传递 (/user/<username>)

用户名作为参数在 URL 中传递(尖括号 < > 内为参数)。

Python

@myapp.route('/user/<username>', methods=['GET'])
# 显式设置 methods=['GET'] 仅用于演示,如不指定默认为 GET
def show_user_profile(username):
    # 使用 URL 中传递的参数渲染页面
    ...

C. 请求参数传递 (/user/username)

用户名作为请求参数传递。

Python

@myapp.route('/user/username')
def show_user_by_request():
    # 使用作为请求传递的参数渲染页面
    ...


课程总结

在本视频中,您学习了:

  1. Flask 概述: Flask 是一个用于创建 Web 应用程序的微框架,支持 CRUD。
  2. 安装: 使用 pip 安装 Flask 包。
  3. 创建流程: 导入 Flask ➡️ 实例化 Flask ➡️ 运行 App。
  4. 模板渲染: Flask 可以渲染静态和动态模板。