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使用wxPython打开并播放wav文件的方法
Apr 24 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
使用python为mysql实现restful接口
Jan 05 Python
tensorflow实现简单的卷积网络
May 24 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python实现打砖块游戏
Feb 25 Python
keras 多gpu并行运行案例
Jun 10 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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+MySql编写聊天室
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
强制设为首页代码
2006/06/19 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Python中bisect的使用方法
2019/12/31 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
董事长岗位职责
2015/02/13 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
初中军训感言
2015/08/01 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
Python MNIST手写体识别详解与试练
2021/11/07 Python
Python经常使用的一些内置函数
2022/04/11 Python
Flink 侧流输出源码示例解析
2022/09/23 Servers