一个Flask运行分析

当我们安装好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之前,有一些准备知识需要先了解一下:

  1. 使用Flask框架开发的属于Web应用。由于Python使用WSGI网关,所以这个应用也可以叫WSGI应用;
  2. 服务器、Web应用的设计应该遵循网关接口的一些规范。对于WSGI网关,要求Web应用实现一个函数或者一个可调用对象webapp(environ, start_response)。服务器或网关中要定义start_response函数并且调用Web应用。关于这部分的内容可以参考:wsgiref包——符合WSGI标准的Web服务实现(一)
  3. Flask依赖于底层库werkzeug。相关内容可以参考:Werkzeug库简介

实例化一个Flask应用

使用 app = Flask(__name__),可以实例化一个Flask引用,实例化的Flask要注意亦一下几点:

  1. 对于请求和响应的处理,Flask使用werkzeug库中的request类和response类,
  2. 对于URL模式的处理Flask应用使用werkzeug库中的Map和Rule类,每个URL模式对应一个RUle实例,这些RUule石磊最终作为参数传递给Map类狗仔包含URL模式的一个映射表。
  3. 当实例化一个Flask应用app(这个应用的名字可以随便定义)之后,对于如何添加URL模式,Flask采取了一种更加优雅的模式,对于这点可以和Django的做法进行比较。Flask采取装饰器的方法,将URL规则和视图函数结合在一起写,其中主要的函数是route。在@app.route("/")
    1. @app.route('/')
      def index():
          pass
       这样写视图函数,会将'/'这条URL规则和视图函数index()联系起来,并且会形成一个Rule实例,再添加进Map实例中去。当访问'/'时,会执行index()。关于Flask匹配URL的内容,可以参考后续文章 
  4. dddd
原文地址:https://www.cnblogs.com/richiewlq/p/8205886.html