2022-06-25
devops
00
请注意,本文编写于 608 天前,最后修改于 608 天前,其中某些信息可能已经过时。

目录

django mvc

django mvc

  • M 与数据库交互
  • V 视图,用户交互
  • C 控制,调用model完成存取数据,分发请求到view。

image-20220616153646169

  1. user -> nginx http

  2. nginx -> uwsgi:

    • http --http , nginx http_proxy
    • uwsgi二进制协议 --scoket, nginx include uwsgi; uwsgi_proxy
  3. uwsgi调用本地的application源码,传递environ, start_response

  4. start_response中完成Url映射,进入view之前进入多个middlewares

  5. 到达view

    • 基于函数视图, fn(request,*args,**kwargs)

    • 基于类的视图, as_view, 返回内层函数view, view完成实例化,dispatch,基于request.method派发请求到当前实例不同属性。

    • DRF view就是原生的django view; APIView支持 request, response加强, request.data接收所有数据; 认证,授权,限流。 GenericAPIView, 将序列化出来,进去,update, 部分update, 删除中的共同的序列化器,查询集抽成属性;其他功能由mixin混合。

      a. DRF APIView,dispatch之前,initrequest, 进行加强request, 认证,授权,限流

      b. 分发请求

  6. view处理完成,响应内容

    • 原生,处理完成之前start_response处理响应首部,再返回响应。
    • drf, 处理完成之前同样处理首部,之后把字典序列化。
  7. 响应经过层层中间件,返回给uwsgi,uwsgi响应给nginx, 再响应给用户。

本文作者:mykernel

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!