day82 中间件



 

中间件



settings.py

from django.middleware.csrf import CsrfViewMiddleware #中间间的本质就是类

MIDDLEWARE = [

‘md.middleware.M1‘, #导入md文件夹middleware.py下的M1类

‘django.middleware.security.SecurityMiddleware‘,

‘django.contrib.sessions.middleware.SessionMiddleware‘,

‘django.middleware.common.CommonMiddleware‘,

‘django.middleware.csrf.CsrfViewMiddleware‘,

‘django.contrib.auth.middleware.AuthenticationMiddleware‘,

‘django.contrib.messages.middleware.MessageMiddleware‘,

‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,

‘md.middleware.M2‘,

]

middleware.py

from django.utils.deprecation import MiddlewareMixin #导入CsrfViewMiddleware内部继承的类

class M1(MiddlewareMixin):

def process_request(self,request): #定义自己的process_request方法

print("m1.process_request")

def process_response(self,request,response): #定义自己的process_response方法

print("m1.process_response")

return response

# 源码为def process_view(self,request,callback,callback_args,callback_kwargs):

# 视图函数 视图函数的args 视图函数的kwargs

def process_view(self,request,view_func,view_func_args,view_func_kwargs):

print("m2.process_view")

class M2(MiddlewareMixin):

def process_request(self,request):

print("m2.process_request")

def process_response(self,request,response):

print("m2.process_response")

return response

def process_view(self,request,view_func,view_func_args,view_func_kwargs):

print("m2.process_view")

#执行结果依次为

m1.process_request

m2.process_request

m1.process_view

m2.process_view

m2.process_response

m1.process_response


process_view的执行顺序(执行完路由匹配后自上而下执行)


process_view的返回顺序

process_exception



process_template


返回的对象有render方法才被执行


ps:

博客园中有两种插入代码的方式

针对推荐的插入代码方式, 可以使用如下代码快速展开折叠的代码

$(‘div.cnblogs_code_hide‘).click();

针对另一种插入代码的方式, 可以使用如下代码快速展开折叠的代码

$(‘div.syntaxhighlighter‘).removeClass(‘collapsed‘);

process_view

来自为知笔记(Wiz)

时间: 2024-10-09 23:04:01

day82 中间件的相关文章

3月1日 大型网站系统与Java中间件实践 读后感

第二章:大型网站以及架构演进过程 db和应用服务器在一台机器上 数据库与应用分离 服务器走向集群,负载均衡,session问题 读写分离:数据复制,数据源的选择,搜索引擎其实就是一个读库,缓存(数据缓存,页面缓存) 分布式存储系统 专库专用,数据垂直拆分 水平拆分 拆分应用,服务化 中间件 第三章:构建Java中间件 JVM 垃圾回收与内存堆布局 java并发类,接口和方法 动态代理 反射 网络通信实现选择

python运维开发(二十)----models操作、中间件、缓存、信号、分页

内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标签有两个作用,一个做用户提交数据验证,一个是生成HTML标签 在生成HTML标签中可以生成select标签,select的选项数据我们可以在数据库中查询读取到. class UserType(models.Model): caption = models.CharField(max_length=1

网站的架构CS和中间件

C/S结构: Client/Server架构,即客户端/服务器架构.是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作. 客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理.数据共享.数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务. 开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难. 详细描述: http://baike.baidu.com/link?u

Django进阶(路由系统、中间件、缓存、Cookie和Session

路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}), 2.根据app对路由规则进行一次分类 rl(r'^web/',include('web.urls')), 1.每个路由规则对应

中间件概述

中间件是基础软件,处于操作系统(或网络协议)与分布式应用之间,从而屏蔽操作系统(或网络协议)的差异,实现分布式异构系统之间的操作.目前,对于中间件还没有形成一个统一的定义,比较公认的IDC的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信. 分类 1,消息中间件(MOM:Message-Oriented Middleware) 2,数据库中间件(Database Middleware)

Laravel 5.0 - Middleware (中间件)

图片:http://stackphp.com/ 如上图所示,中心的绿色区域是整个应用的核心区域. 所以,中间件就是一系列处理请求和响应的方式而不是你用程序逻辑的一部分. Laravel 中默认使用中间件处理请求中的加密解密,以及 Cookies 和 Sessions.你也可以自定义自己所需的中间件. 写中间件 artisan make:middleware MyMiddleware 执行上面的命令,生成中间件文件: <?php namespace App\Http\Middleware; use

Asp.Net.Core 系列-中间件和依赖注入进阶篇

上一节讲了中间件和依赖注入的基础,紧接着: 中间件是怎么使用的?使用步骤是什么? 只要把中间件注册到管道中就行了,可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓的StartupFilter是对所有实现了IStartupFilter接口的类型及其对象的统称.IStartupFilter接口定义了如下一个唯一的方法Configure,该方法的参数next返回的Ac

第三百一十六节,Django框架,中间件

第三百一十六节,Django框架,中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings模块中,有一个 MIDDLEWARE变量,其中每一个元素就是一个中间件(也就是一个中间件模块的一个类),如下. settings模块中 #中间件 MIDDLEWARE = [ 'django.middleware.security.Securit

Django中间件部分

一.什么是WSGI? WEB框架的本质是一个socket服务端接收用户请求,加工数据返回给客户端(Django),但是Django没有自带socket需要使用 别人的 socket配合Django才能正常运行,socket有很多如下,  但是它们必须遵循一个规范 WSGI(web服务网关接口)这个所有socket都遵守的规范就是WSGI. Django默认使用: wsgiref socket(并发性能低 测试使用) 在公司生产系统上一般用uwsgi+nginx+Django结合使用 wsgire