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 Django模板的使用方法
Jan 14 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
对命令行模式与python交互模式介绍
May 12 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
Python修改列表值问题解决方案
Mar 06 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
基于php 随机数的深入理解
2013/06/05 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python实现人机猜拳小游戏
2020/02/03 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2015年维修工作总结
2015/04/25 职场文书
参加招聘会后的感想
2015/08/10 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
sql server 累计求和实现代码
2022/02/28 SQL Server