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人人网登录应用实例
Sep 26 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
Python使用永中文档转换服务
May 06 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/12 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
详解angular element()方法使用
2017/04/08 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python3实现购物车功能
2018/04/18 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python实现梯度下降法
2020/03/24 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
火锅店创业计划书范文
2014/02/02 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
汽车转让协议书范本
2014/12/07 职场文书
投标承诺函范文
2015/01/21 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
重阳节简报
2015/07/20 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书