面试-Django框架请求生命周期

先看一张图吧!

1、请求生命周期

  • - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask、Django)
  • - 中间件,帮助我们对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session
  • - 路由匹配
  • - 视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染
  • - 中间件,对响应的数据进行处理。
  • - wsgi,将响应的内容发送给浏览器。

2、什么wsgi

wsgi:web服务网关接口

实现该协议的模块:
 - wsgiref(测试版本,性能特别差)
 - werkzurg
 - uwsig

wsgiref示例:


1

2

3

4

5

6

7

8

9

10

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示例:  


1

2

3

4

5

6

7

8

9

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规范详情。。

原文地址:https://www.cnblogs.com/fan-1994716/p/11875766.html

时间: 2024-10-11 04:05:51

面试-Django框架请求生命周期的相关文章

Django的请求生命周期

Django的请求生命周期: 1.当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 2.服务端的wsgiref模块接收用户请求并将请求进行初次封装,然后将请求交给Django的中间件 3.通过中间件之后将请求交给url,根据浏览器发送的不同url去匹配不同的视图函数 4.视图函数根据业务逻辑调用数据库获取相应的数据,然或根据模板渲染页面 5.视图函数将响应的页面依次通过中间件反馈给客户端 原文地址:https://www.cnblogs.com/Ming-Hui/p/93481

Django的请求生命周期与中间件中的5中方法

请求生命周期: 客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端 中间件: 在全局层明处理请求和响应的 form django.utils. deprecation import MiddlaraMixin 5种方法与4个要点:执行顺序,执行时间,参数,返回值 方法:process_request process_views process_exception process_response process_template_r

Django之请求生命周期及FBV/CBV模式

一.Http请求的过程1.http的请求/响应模式,先是用户通过前端页面发送一个http请求,请求内容包括三部分:请求头/空行/请求体(get方法没有请求体)例如:抓包如下:2.服务端就收到http的请求内容的字符串后,进行解析出相应的请求头(method /url/cookie等信息 )和请求体内容,并将请求体的内容转换成对应的key-value格式.3.服务端再通过url去匹配对应的URL路由(匹配规则是从上向下进行正则匹配,若匹配成功则停止不再向下匹配),匹配成功后找到views中对应的函

Django框架进阶7 django请求生命周期流程图, django中间件, csrf跨站请求伪造, auth认证模块

django请求生命周期流程图 djang中间件 它是django的门户 只要是全局相关的功能你都应该考虑使用django中间件来帮你完成 全局用户身份校验 全局用户访问频率校验 用户访问黑名单 用户访问白名单 # 只要以后用django开发业务 设计到全局相关的功能 你就考虑用中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Sessio

Django请求生命周期和ORM

dajngo请求生命周期 django请求生命周期是:当用户在browser点击URL后,在django后台都发生了什么. 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 URL –>函数 --->FBV URL –>类     --->FBV 4.业务处理 根据个人需求自定 操作数据库 原生SQL Django ORM ---->返回给用户的结果<----- -响应

rest_framework框架的封装特点和APIView请求生命周期

rest_framework框架的封装特点: import rest_framework from rest_framework.views import APIView from rest_framework.request import Request 在views.py中写出合适的api类,只需要继承rest_framework中generics中的某个类,重写我们需要的方法实现合适的逻辑即可 APIView请求生命周期 """ APIView的as_view(局部禁用

DJANGO入门系列之(Django请求生命周期and路由层)

昨日回顾 1 orm 创建表,新增字段,修改,删除字段,不能创建数据库 -字段属性phone=models.CharField(max_length=64,null=True) -null=True 代表该列可以为空 2 数据的增删改查 -增(1):User.objects.create(address='') -增(2):实例化产生一个user对象,user对象的save方法 -删:User.objects.filter(id=1,name='lqz').first().delete() -删

Django请求生命周期之响应内容

Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>FBV URL -> 类 ==>CBV4.业务处理 - 根据个人需求自定 - 操作数据库 - 原生SQL - Django ORM ==> 返回给用户的结果 <== - 响应内容 - 响应头 - 响应体 原文地址:https://www.cnblogs.com/ray-h/p/10241

Django请求生命周期

1. Django请求生命周期的概念 用户在浏览器上输入url连接到看都页面的时间内, Django后台发生的事 2. Django请求生命周期的基本概述 1. 文字描述 第一步:浏览器发起请求 第二步:WSGI创建socket服务端,接收请求(Httprequest) 第三步:中间件处理请求 第四步:url路由,根据当前请求的URL找到视图函数 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图:view视图将数据渲染到template模板:将数据返回) 第