Django框架请求生命周期实现原理
先看一张图吧!

1、请求生命周期
- wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask、Django)
- 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session
- 路由匹配
- 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染
- 中间件,对响应的数据进行处理。
- wsgi,将响应的内容发送给浏览器。
2、什么wsgi
wsgi:web服务网关接口
实现该协议的模块:
- - wsgiref(测试版本,性能特别差)
- - werkzurg
- - uwsig
wsgiref示例:
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示例:
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规范
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Python+Matplotlib绘制高亮显示饼图的示例代码
饼图 (Pie Chart) 是一种圆形统计图,被分割成片用于表示数值间的比例关系,本文为大家介绍了Matplotlib绘制高亮显示的饼图的函数源码,需要的可以参考一下2023-06-06
解决plt.savefig()和plt.show()方法得到的图片不一样问题
这篇文章主要介绍了解决plt.savefig()和plt.show()方法得到的图片不一样问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08
关于vscode 默认添加python项目的源目录路径到执行环境的问题
这篇文章主要介绍了vscode 默认添加python项目的源目录路径到执行环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-02-02


最新评论