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简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
opencv python 2D直方图的示例代码
Jul 20 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
Numpy 多维数据数组的实现
Jun 18 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 Python
Python+Appium新手教程
Apr 17 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运行速度的一些小技巧分享
2012/07/03 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python爬虫框架talonspider简单介绍
2017/06/09 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Python如何实现邮件功能
2020/05/27 Python
自荐信封面
2013/12/04 职场文书
户外婚礼策划方案
2014/02/08 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
辅导员评语
2014/05/04 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
重阳节慰问信
2015/02/15 职场文书
教师求职信怎么写
2015/03/20 职场文书
通知的写法
2015/04/23 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS