Flask框架的几个设计理念

其实这篇可看也可以不看。先说一下django的MTV模型(为啥是django呢,因为我之前学的是django)。

Flask框架的几个设计理念
MTV模型

所谓的MTV ( Model–Template–View ),翻译一下就是模型、模板、视图。一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

flask同样也遵循这个MTV模型。用户发起一个请求,flask调用视图函数进行响应。

程序和请求上下文

Flask从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。Flask使用请求对象封装了客户端发送的HTTP请求,传递给视图函数。

此外,Flask使用上下文临时把某些对象变为全局可访问
上下文分为程序上下文请求上下文

请求调度

程序收到客户端发来的请求时,需要找到处理该请求的视图函数。Flask会在程序的URL映射中查找请求的URL。URL映射是URL和视图函数之间的对应关系。Flask使用<u>app.route()</u>修饰器或非修饰器<u>app.add_url_rule()</u>生成映射。

请求钩子

主要在处理请求之前或之后执行代码时使用。请求钩子使用修饰器实现

  • before_first_request在处理第一个请求之前运行注册的函数
  • before_request 在每次请求前运行注册的函数
  • after_request 在每次请求之后运行未出错的注册函数
  • teardown_request 在每次请求之后运行注册函数,无视异常

响应

Flask调用视图函数后,会将其返回值作为响应的内容,状态码为200。
视图函数返回的响应可以接受三个参数,通常不用到第三个。

  1. 响应内容
  2. 状态码
  3. header字典
    例子如下:
    @app.route('/')
    def index():
    return '<h1> Bad request </h1>', 400
    此外还有重定向(redirect),特殊响应(abort)
上一篇:Delphi中使用ReportMachine 6.5中汇总行不进行汇总的设置问题


下一篇:零基础安装wordpress,搭建个人博客!