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实现类似ftp传输文件的网络程序示例
Apr 08 Python
python正则表达式中的括号匹配问题
Dec 14 Python
python多个模块py文件的数据共享实例
Jan 11 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
Django保护敏感信息的方法示例
May 09 Python
Python中函数参数匹配模型详解
Jun 09 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
python numpy 矩阵堆叠实例
Jan 17 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
python主要用于哪些方向
Jul 05 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
python基础教程之缩进介绍
2014/08/29 Python
python返回昨天日期的方法
2015/05/13 Python
numpy中的高维数组转置实例
2018/04/17 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
汽车销售顾问求职自荐信
2014/01/01 职场文书
总账会计岗位职责
2014/03/13 职场文书
《学会合作》教学反思
2014/04/12 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
安全保证书
2015/01/16 职场文书
文案策划岗位职责
2015/02/11 职场文书
通知的写法
2015/04/23 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS