• 面试-Django框架请求生命周期


     

    先看一张图吧!

     1、请求生命周期

    • - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask、Django)

    • - 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session

    • - 路由匹配

    • - 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染

    • - 中间件,对响应的数据进行处理。

    • - wsgi,将响应的内容发送给浏览器。

    2、什么wsgi

    wsgi:web服务网关接口

     实现该协议的模块:
     - wsgiref(测试版本,性能特别差)
     - werkzurg
     - uwsig

    wsgiref示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from wsgiref.simple_server import make_server
     
    def run_server(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]  #字节
      
      
    if __name__ == '__main__':
        httpd = make_server('127.0.0.1', 8000, run_server)
        httpd.serve_forever()

    werkzeug示例:  

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from werkzeug.wrappers import Response
    from werkzeug.serving import run_simple
     
    def run_server(environ, start_response):
        response = Response('hello')
        return response(environ, start_response)     #对象
     
    if __name__ == '__main__':
        run_simple('127.0.0.1', 8000, run_server)

    3、视图

    •  FBV

    url - 函数

    •  CBV

     url - view

    FBV(function base view)与CBV(class base view)本质是一样的,只是fbv基于函数,cbv基于类。只不过fbv较cbv往后多执行了几步。

    4、rest-framework

    rest-framework从dispatch方法开始介入,执行完视图,如果有rest-framework组件,就执行rest-framework。

    5、restfui规范

    查看restful规范详情。。

  • 相关阅读:
    Penetration Test
    Penetration Test
    Penetration Test
    Penetration Test
    controller配置方式总结(继上)
    架构师的自我修养
    SpringMVC快速入门
    第十六章:字节流与字符流
    第十五章:文件操作
    第十四章:类库使用案例分析
  • 原文地址:https://www.cnblogs.com/fan-1994716/p/11875766.html
Copyright © 2020-2023  润新知