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的框架下的web app的详细教程
Apr 30 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
pandas-resample按时间聚合实例
Dec 27 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
Python底层封装实现方法详解
Jan 22 Python
python实现扫雷小游戏
Apr 24 Python
Python远程方法调用实现过程解析
Jul 28 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执行sql语句的写法
2009/03/10 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
Extjs 几个方法的讨论
2010/01/28 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
Python聊天室实例程序分享
2016/01/05 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
戒赌保证书
2015/05/11 职场文书
入党介绍人考察意见
2015/06/01 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android