Flask 基础知识
Flask 是一种开源 Web“微框架”。 当创建者使用“微框架”这一术语时,他们是指框架将执行 Web 框架所需的任务,但其中不包含高级功能,或其他应用程序必须遵循才能正常工作的特定要求。 这种方法使 Flask 非常灵活,十分适合用作现有后端或 API(如 Azure AI 服务)的前端!
在使用任何框架创建 Web 应用时,我们都需要了解几个核心概念:路由、方法和模板化。 在编写代码前,我们先来了解这些概念。
使用路由响应用户请求
在使用 Web 应用时,用户通过浏览到不同的统一资源定位器(即 URL)来表明自己要执行的操作或正在查找的信息。 用户可以直接输入地址(比如 https://adventure-works.com
),也可以选择链接或包含相应 URL 的按钮。 在电子商务网站上,你可能会看到如下 URL:
- 主页:
https://adventure-works.com/
- 小组件详细信息:
https://adventure-works.com/products/widget
- 完成购买:
https://adventure-works.com/cart/buy
作为开发人员,我们实际上无需担心 URL 的第一部分或域(本例中的“adventure-works.com”)。 我们的应用程序将根据域名后面的任何内容来执行操作,从 / 开始。 域名后面的部分称为“路由”。
路由是操作的路径。 与点击移动应用中的按钮类似,路由指示用户想要执行的操作。 我们将在 Web 应用中注册不同的路由,以响应应用程序支持的各种请求。
在我们的应用程序中,我们通过提供一个函数来指示要如何响应特定路由请求。 路由是到函数的映射。 一般来说,当我们考虑编写代码时,这个概念是相对自然而然的。 当我们想要执行特定操作时,就会调用函数。 我们的用户将执行完全相同的操作! 不过他们将通过访问路由来完成此操作。
方法或谓词
可以通过所谓的方法或谓词(这两个术语意思相同,可以互换使用)以多种方式访问路由。 访问路由的方式提供了关于用户请求状态和用户要执行的操作的更多上下文。
创建 Web 应用时,有许多可用方法,但最常见的两种方法(也是我们只关注的两种)是“GET”和“POST”。 GET 通常表示用户正在请求信息,而 POST 表示用户需要向我们发送信息并接收响应。
备注
不管使用什么谓词,信息始终都返回给用户。
使用 GET 和 POST 的常见应用程序流围绕使用表单展开。 假设我们创建了一款应用程序,其中用户想要注册邮件列表:
- 用户通过 GET 访问注册表单
- 用户完成表单,并选择“提交”按钮
- 表单中的信息通过 POST 发送回服务器
- 向用户返回“成功”消息
您可能会怀疑,用户并没有直接指明自己要使用的谓词,谓词由应用程序控制。 一般来说,如果用户通过键入 URL 或选择链接直接导航到 URL,则使用 GET 访问该页面。 当该用户选择表单的按钮时,通常会通过 POST 发送信息。
备注
我们会相对概要地介绍此对话内容,因为对方法的全面讨论超出了本模块的范围。
模板
超文本标记语言 (HTML) 是用于构造浏览器上显示的信息的语言,而级联样式表 (CSS) 则用于管理样式和布局。 在创建应用程序时,大多数 HTML 都是静态的,这意味着该语言不会改变。 然而,为使页面具有动态性,我们需要能够以编程方式将信息放入 HTML 页面。 几乎每个 Web 框架都可通过模板来满足这一需求。
借助模板,你可以编写核心 HTML(或模板)并指示动态信息的占位符。 占位符最常见的语法或许是 {{ }}
。 Flask 的模板引擎 Jinja 使用的就是这种语法。
<h1>Welcome, {{ name }}</h1>
在前面的例子中,我们用到了 h1
(标头)的 HTML,其中包含我们要显示的文本。 {{ name }}
表示要在“欢迎使用”之后显示一个名为 name
的变量。 通过这种语法,我们可以使用现有技能编写 HTML,并根据需要注入动态信息。