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为iOS10生成图标和截屏
Sep 24 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
python读取和保存视频文件
Apr 16 Python
python实现周期方波信号频谱图
Jul 21 Python
python如何创建TCP服务端和客户端
Aug 26 Python
Python下简易的单例模式详解
Apr 08 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Django Auth用户认证组件实现代码
Oct 13 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
使用Python封装excel操作指南
Jan 29 Python
深入理解Python变量的数据类型和存储
Feb 01 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
php session的应用详细介绍
2017/03/22 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
python 对象和json互相转换方法
2018/03/22 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
python实现低通滤波器代码
2020/02/26 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
2014婚礼司仪主持词
2014/03/14 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
假面舞会策划方案
2014/05/29 职场文书
学校运动会广播稿
2014/10/11 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
Python利用capstone实现反汇编
2022/04/06 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL