当我们安装好Flask环境之后,创建好项目,就会自动生成下面这段代码:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
运行这段代码,然后通过浏览器访问http://127.0.0.1:5000/ 页面上就会渲染 Hello World,这就是我们进入Flask世界的第一个相许。
一些准备知识
在正式分析Flask之前,有一些准备知识需要先了解一下:
- 使用Flask框架开发的属于Web应用。由于Python使用
WSGI
网关,所以这个应用也可以叫WSGI
应用; - 服务器、Web应用的设计应该遵循网关接口的一些规范。对于
WSGI
网关,要求Web应用实现一个函数或者一个可调用对象webapp(environ, start_response)
。服务器或网关中要定义start_response
函数并且调用Web应用。关于这部分的内容可以参考:wsgiref包——符合WSGI标准的Web服务实现(一)。 - Flask依赖于底层库
werkzeug
。相关内容可以参考:Werkzeug库简介。
实例化一个Flask应用
使用 app = Flask(__name__),可以实例化一个Flask引用,实例化的Flask要注意亦一下几点:
- 对于请求和响应的处理,Flask使用werkzeug库中的request类和response类,
- 对于URL模式的处理Flask应用使用werkzeug库中的Map和Rule类,每个URL模式对应一个RUle实例,这些RUule石磊最终作为参数传递给Map类狗仔包含URL模式的一个映射表。
- 当实例化一个Flask应用
app
(这个应用的名字可以随便定义)之后,对于如何添加URL模式,Flask采取了一种更加优雅的模式,对于这点可以和Django的做法进行比较。Flask采取装饰器的方法,将URL规则和视图函数结合在一起写,其中主要的函数是route
。在@app.route("/") -
@app.route('/') def index(): pass
'/'
这条URL规则和视图函数index()
联系起来,并且会形成一个Rule
实例,再添加进Map
实例中去。当访问'/'
时,会执行index()
。关于Flask匹配URL的内容,可以参考后续文章 - dddd