Django框架请求生命周期实现原理


Posted in Python onNovember 13, 2020

先看一张图吧!

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规范

查看restful规范详情

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
python3调用windows dos命令的例子
Aug 14 Python
python中对_init_的理解及实例解析
Oct 11 Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
jupyter notebook清除输出方式
Apr 10 Python
详解Python小数据池和代码块缓存机制
Apr 07 Python
python在地图上画比例的实例详解
Nov 13 #Python
python语言实现贪吃蛇游戏
Nov 13 #Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 #Python
python切割图片的示例
Nov 12 #Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 #Python
Django执行源生mysql语句实现过程解析
Nov 12 #Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 #Python
You might like
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
webpack入门必知必会
2017/01/16 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
浅谈原型对象的常用开发模式
2017/07/22 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python django集成cas验证系统
2014/07/14 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
详解python深浅拷贝区别
2019/06/24 Python
python中比较两个列表的实例方法
2019/07/04 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
营业经理岗位职责
2013/11/10 职场文书
财务会计实习报告体会
2013/12/20 职场文书
中学生获奖感言
2014/02/04 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
激励口号大全
2014/06/17 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android