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 调用win32pai 操作cmd的方法
May 28 Python
python导出hive数据表的schema实例代码
Jan 22 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
django 发送手机验证码的示例代码
Apr 25 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
基于python实现雪花算法过程详解
Nov 16 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
python super()函数的基本使用
Sep 10 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 Python
django中websocket的具体使用
Jan 22 Python
如何用六步教会你使用python爬虫爬取数据
Apr 06 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
PHP 和 COM
2006/10/09 PHP
PHP的面向对象编程
2006/10/09 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python使用7z解压apk包的方法
2015/04/18 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
python获取地震信息 微信实时推送
2019/06/18 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Pytorch之finetune使用详解
2020/01/18 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
用Python开发app后端有优势吗
2020/06/29 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
新加坡交友网站:be2新加坡
2019/04/10 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
学习心理学的体会
2014/11/07 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server