Flask 框架简介
- [Flask 框架简介](#Flask 框架简介)
Flask 框架简介
Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的,但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面,Flask允许根据数据库类型或集成方法使用扩展来实现相同的目标。Flask的另一个理念是使用约定而不是配置,这意味着如果我们遵循网页开发的标准约定,我们就必须减少配置。这使得Flask成为初学者学习Python 网页开发的最佳选择。我们选择Flask进行网页开发,不仅是因为它易于使用,还因为它允许我们逐步引入不同的概念。
在这一节中,我们会构建一个带有路由的基础应用。我们接下来会使用代码示例理解怎么构建一个网页应用程序,以及路由是怎么工作的。下面是完整的代码示例:
python
# Flask 应用程序中的路由
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "这个世界会好吗?"
@app.route("/greeting")
def greeting():
return "这是世界上最美丽的地方!"
if __name__ == "__main__":
app.run()
让我们逐步分析代码示例:
-
初始化:Flask 应用程序必须创建一个应用程序实例(在这个例子中是
app
),这是第一步。网页服务器将会把来自于客户端的所有请求使用网页服务器网关接口(WSGI,Web Server Gateway Interface)传递给它的应用程序实例。应用程序实例是通过app = Flask(__name__)
语句创建的。把模块名字作为实参传递给
Flask
构造函数是很重要的。Flask
通过这个参数获知应用程序的位置,这个位置后续会被用来定位其它文件,例如静态资源、模板和图片。使用__name__
是传递给 Flask 构造函数的约定(约定优先配置),其余的由 Flask 负责。 -
路由:一旦一个请求到达了 Flask 程序实例,现在执行一段代码来处理请求是这个实例的责任。这一段代码,通常是一个 Python 函数,被称作处理器。好消息是每一个通常(而不是所有时间)只和一个
URL
关联,这就会让在 Python 函数和URL
之间定义一一对象的映射成为可能。这个从URL
到 Python 函数的映射被称作路由。在我们的代码示例中,我们选择了一个简单的方案,通过使用装饰器,来定义这个映射。比如,/hello
URL
被映射到hello
函数,/greeting
URL
映射到greeting
函数。如果我们喜欢把所有路由定义在一个地方,我们可以使用在应用实例上使用add_url_rule
来定义所有路由。
3.处理器函数:处理器函数在处理完请求后,必须要送出一个回应给客户端。一个回应可以是一个简单的字符串,可以带有也可以不带有 HTML
,或者也可以是一个复杂的网页,这个网页可以是静态的页面,也可以是基于模板的动态的页面。在我们的示例代码中,我们返回一个简单的字符串,只为演示目的。
-
网页服务器:Flask 应用程序带有一个可以启动的开发服务器,可以使用
app.run()
方法启动,或者使用flask run
命令 在shell
中启动 。当我们启动网页服务器后,默认情况下,它会寻找app.py
或wsgi.py
模块。如是果我们使用app.py
当作我们模块的名字(约定,优先配置),模块会被自动加载。但是,如果我们给我们的模块使用了一个不同的名字(在这个例子中,我们就是这么做的),我们必须设置一个环境变量,FLASK_APP=<模块名字>
,网页服务器会使用这个变量加载模块。如果你使用 Pycharm Pro 等开发环境创建了一个 Flask 项目,环境变量将会是你项目设置的一部分。如果你使用的是命令行,你可以使用下面的命令设置环境变量:
bashexport FLASK_APP=app1.py # 这是 macOS 和 Linux 的命令 set FLASK_APP=app1.py # 这是 Windows 命令
当服务器启动后,它会在
http://localhost:5000/
这个URL
上等待客户端请求。默认情况下,只能在本机访问这个网址。如果我们想使用不同的主机名和端口启动服务器,我们可以使用下面的命令:bashFlask run --host <ip_address> --port <port_num>
-
网页客户端:我们可以通过在浏览器地址栏输入网址,或对于简单的请求使用
curl
工具,测试服务器。在这个例子中,我们可以使用下面的curl
命令测试我们的应用程序:bashcurl -X GET http://localhost:5000 curl -X get http://localhost:5000/greeting
上面命令的输出结果分别是:
这个世界会好吗? 这是世界上最美丽的地方!
以上我们先简单讨论一下 Flask 应用的基础。还请关注后续深入的探讨。
<完>