django中间件 process_view

先执行所有的request

在执行所有的view

在执行reponse

url匹配路由

class M1(MiddlewareMixin):    def process_request(self, request):        print(‘m1.process_request‘)

def process_view(self, request, callback, callback_args, callback_kwargs):        """        如果有返回值,则不在继续执行,直接到最后一个中间件的response        """        print(‘m1.process_view‘, callback)        # return HttpResponse(‘Process View返回值‘)    def process_response(self,request, response):        print(‘m1.prcess_response‘)        return responseclass M2(MiddlewareMixin):    def process_request(self, request):        print(‘m2.process_request‘)

def process_view(self, request, callback, callback_args, callback_kwargs):        """        如果有返回值,则不在继续执行,直接到最后一个中间件的response        """        print(‘m2.process_view‘, callback)        # return HttpResponse(‘Process View返回值‘)

def process_response(self,request, response):        print(‘m2.prcess_response‘)        return response

m1.process_request
m2.process_request
m1.process_view <function LoginView at 0x0000000003B531E0>
m2.process_view <function LoginView at 0x0000000003B531E0>
m2.prcess_response
m1.prcess_response

callback视图函数名

从哪里可以知道是怎么执行的,看process_view。

process_view能不能有返回值

如果proces——view有返回值,后面的proces_view就不执行了
class M1(MiddlewareMixin):    def process_request(self, request):        print(‘m1.process_request‘)

def process_view(self, request, callback, callback_args, callback_kwargs):        """        如果有返回值,则不在继续执行,直接到最后一个中间件的response        """        print(‘m1.process_view‘, callback)        return HttpResponse(‘Process View返回值‘)    def process_response(self,request, response):        print(‘m1.prcess_response‘)        return responseclass M2(MiddlewareMixin):    def process_request(self, request):        print(‘m2.process_request‘)

def process_view(self, request, callback, callback_args, callback_kwargs):        """        如果有返回值,则不在继续执行,直接到最后一个中间件的response        """        print(‘m2.process_view‘, callback)        # return HttpResponse(‘Process View返回值‘)

def process_response(self,request, response):        print(‘m2.prcess_response‘)        return response结果:

m1.process_request
m2.process_request
m1.process_view <function LoginView at 0x0000000003B631E0>
m2.prcess_response
m1.prcess_response

				
时间: 2024-08-26 20:26:53

django中间件 process_view的相关文章

关于Django中间件自己的一点理解

Django中间件我觉得是一个非常重要的东西,所以把自己的一些理解分享出来,哪里有不对的还希望大家可以帮助我修改. 因为是自己写的代码,所以就把代码粘过来了,里边每一部分都会有自己的理解和注释,见谅! from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import redirect,HttpResponse #对于有些Django没有MiddleMixin类,就在上边自己写一个,但是这时上边的类引用

Django中间件 及 form 实现用户登陆

Django中间件 及 form 实现用户登陆 Form 验证 密码调用md5 加密存储 form.add_error("字段名", "错误信息") 自定义错误信息 装饰器实现 用户认证 中间件实现 用户认证 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性能. django默认的中间件在settings.py中 当用户发起请求

Django 中间件简介

Django 中间件简介 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件 中间件中一共有四个方法: process_request(self,request) 发送请求 process_view(self, request, callback,

Django学习之七:Django 中间件

目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 总结 Django 中间件 Django中间件可看作是包裹在django处理机制的外层,Httprequest和Httpresponse都要经中间件处理,从而起到全局钩子的作用,可以达到一些目的:如过滤请求,预处理请求,响应修改等. 我理解,很多基于会话的应用系统,都可以设计中间件环节.如数据库系统.中间件可以起到全局钩子的作用.django的中间件的设计就是一种递归顺序调用,利用httprequest作为递

Django中间件的使用

Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和response. Django默认的中间件 在settings中Django以及默认添加了许多有用的中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'dja

☆Django☆---中间件 csrf跨站请求伪造 auth模块 settings功能插拔式源码

Django中间件 django生命周期图 中间件: 概念: Django中间件就类似于 django的保安   请求 的时候需要先经过中间件才能到达django后端(urls, views)   响应 走的时候也需要经过中间件才能到达web服务网关接口 django默认的七个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Session

Django中间件、csrf跨站请求伪造以及基于Django中间件思想实现功能的插拔式配置

一.django中间件 1.1解释:django中间件是类似于是django的保安,请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models),响应走的时候也需要经过中间件才能到达web服务网关接口 1.2django默认的七个中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.Session

五十二、django 中间件,csrf跨站请求伪造,auth模块表

django 中间件 django中间件事类似django的保安,请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models), 响应走的时候也需要经过中间件才能到达web服务网关接口 django中间件中有五个用户可以自定义的方法 django中间件可以用来做什么? 1.网站全局的身份校验,访问频率限制,权限校验..只要涉及到全局的校验都可以在中间件中完成 2.django的中间件是所有web框架中,做的最好 需要掌握的方法有: 1.proces

19 Django中间件

目录 一.前言 二.中间件介绍 2.1 什么是中间件 2.2 自定义中间件 2.3 自定义一个中间件示例 三.自定义中间价 process_request 四.自定义中间件 process_response 五.自定义中间件 process_view(了解) 六.自定义中间件方法 process_exception(了解) 七.自定义中间件 process_template_response(了解) 八.中间件的执行流程 九.中间件版登录验证 十.伪站请求伪造 十一.截取钓鱼网站的策略(伪站请求