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类定义的讲解
Nov 01 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
使用python绘制常用的图表
Aug 27 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
django允许外部访问的实例讲解
May 14 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
python global关键字的用法详解
Sep 05 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python实现ping命令小程序
Dec 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
用在PHP里的JS打印函数
2006/10/09 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
统计出现最多的字符次数的js代码
2010/12/03 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
js中document.write的那点事
2014/12/12 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
javascript表单正则应用
2017/02/04 Javascript
javascript实现下雨效果
2017/03/27 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
js正则相关知识点专题
2018/05/10 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
python删除过期文件的方法
2015/05/29 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
我就是这样学习Python中的列表
2019/06/02 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
日期和时间问题
2015/01/04 面试题
中秋节国旗下演讲稿
2014/09/05 职场文书
公司给客户的感谢信
2015/01/23 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python