Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

【Flask 系列】一个最简单的应用

$
0
0

我们在前面已经看到了一个简单的 Hello World 的例子,相信你已经成功地把它跑起来了,下面我们对这个程序进行讲解。回顾一下这个程序:

$ cat hello.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
先看程序的第 1 句: from flask import Flask

该句从 flask 包导入了一个 Flask 类,这也是后面构建 Flask Web 程序的基础。

接着看程序的第 2 句: app = Flask(__name__)

上面这一句通过将 __name__ 参数传给 Flask 类的构造函数,创建了一个程序实例 app ,也就创建了一个 Flask 集成的开发 Web 服务器。 Flask 用 __name__ 这个参数决定程序的根目录,以便程序能够找到相对于程序根目录的资源文件位置,比如静态文件等。

接着看程序的第 3,4,5 句: @app.route("/")
def hello():
return "Hello World!"

可能读者会对这三句感到很困惑:它们的作用是什么呢?我们知道,Web 浏览器把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask 程序实例,那么程序实例就需要知道对每个 URL 请求应该运行哪些代码。

上面这三句代码的意思就是:如果浏览器要访问服务器程序的根地址(”/“),那么 Flask 程序实例就会执行函数 hello() ,返回『Hello World!』。

比如,假设我们部署程序的服务器域名为 www.hello.com ,当我们在浏览器访问 http://

www.hello.com(也就是根地址)时,会触发 Flask 程序执行 hello() 这个函数,返回『Hello World!』, 这个函数的返回值称为响应,是客户端接收到的内容。

但是,如果我们在浏览器访问 http://www.hello.com/peter 时,程序会返回 404 错误,因为我们的 Flask 程序并没有对这个 URL 指定处理函数,所以会返回错误代码。

接着看程序的最后两句: if __name__ == "__main__":
app.run()

上面两句的意思,当我们运行该脚本的时候(第 1 句),启动 Flask 集成的开发 Web 服务器(第 2 句)。默认情况下,改服务器会监听本地的 5000 端口,如果你想改变端口的话,可以传入 “port=端口号”,另外,如果你想支持远程,需要传入 “host=0.0.0.0”,你还可以设置调试模式,如下:

app.run(host='0.0.0.0', port=8234, debug=True)

服务器启动后,程序会进入轮询,等待并处理请求。轮询会一直运行,直到程序被终止。需要注意的是,Flask 提供的 Web 服务器不适合在生产环境中使用,后面我们会介绍生产环境中的 Web 服务器。

OK,到此为止,我们基本明白一个简单的 Flask 程序是怎么运作的了,后面我们再注入深入了解 Flask。


Viewing all articles
Browse latest Browse all 9596

Trending Articles