Flask之部分源码解析

Flask之入门

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

Werkzeug 之初体验

WSGI(全称Web Server Gateway Interface),是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP,响应等等的这些底层的代码和操作,使开发者可以高效的编写Web应用。

Flask之部分源码解析_第1张图片
WSGI-APP
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple


@Request.application
def hello(request):
    return Response('Hello World!')

if __name__ == '__main__':

    run_simple('localhost', 4000, hello)

Flask之基本

from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
if __name__ == '__main__':
    app.run()

Flask之Context(上下文)

Flask提供了两种上下文,一种是应用上下文(Application Context),一种是请求上下文(Request Context)。

简单的解释一下application context与request context:
  1. application 指的就是当你调用app = Flask(name)创建的这个对象app;
  2. request 指的是每次http请求发生时,WSGI server(比如gunicorn)调Flask.call()之后,在Flask对象内部创建的Request对象;
  3. application 表示用于响应WSGI请求的应用本身,request 表示每次http请求;
  4. application的生命周期大于request,一个application存活期间,可能发生多次http请求,所以,也就会有多个request

Flask__call__方法调用解析

文字解释比较繁琐,还是直接上图吧.


Flask之部分源码解析_第2张图片
简单流程

如有疑问可以随时探讨.谢谢观看.点一下关注呗>

你可能感兴趣的:(Flask之部分源码解析)