网页制作之Django中间件

学习目标:

明确中间件的作用,了解中间件的原理,能够创建和使用中间件。

学习内容:

1、 中间件的作用
-	处理请求
-	处理响应
-	处理视图函数
-	处理异常

2、 中间件的原理

中间件实际上就是一群能够自动触发执行的函数集合。能够在用户请求与服务器端
的路由与视图函数之间建立一座桥梁。

3、 中间件的应用

-	在项目文件夹中创建一个目录(这里用Middle),
	在目录中建立自己的中间件py文件(M1.py)
	a.	导入创建中间件需要的模块MiddlewareMixin与自己需要的模块
		from django.utils.deprecation import MiddlewareMixin
		from django.shortcuts import HttpResponse
	b.	定义自己的类(process_request,process_view,process_response,process_exception这几个函数名和参数与参数顺序不能改)
		class M1(MiddlewareMixin):
	    def process_request(self,request):
	        print("请求1")
	    def process_view(self,request,view_func,view_func_args,view_func_kwargs):
	        print("处理view函数1",view_func_args)
	        print("处理view函数1",view_func_kwargs)
	    def process_response(self,request,response):
	        print("响应1")
	        return response
	    def process_exception(self,request,exception):
	        if isinstance(exception,ValueError):
	            return HttpResponse("异常处理1 ValueError!!!")
-	在settings.py文件中找到MIDDLEWARE并进行设置
	a.	添加常规中间件
		MIDDLEWARE = [
		    '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',
		]
	b.	添加自定义中间件(添加的是路径)
		MIDDLEWARE = [
		    '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',
		    'Middle.M1.M1',
		]

4、 中间件的运行规则

-	请求到来,依次执行列表中的中间件,遇到process_request函数就执行,
	如果到某一个中间件的process_request函数直接返回响应response,
	就直接原路返回依次执行process_response函数,不能到达目的地view函数。
-	如果执行最后一个中间件的process_request函数依然没有返回,
	接下来就经过路由找到对应的view函数,但是不执行view函数,
	而是跳转到中间件列表的开头位置,依次执行process_view函数,
	直到最后一个,然后才能转到view函数并执行。
-	如果执行view函数出现错误异常,会按照中间件列表的反向顺序
	依次执行process_exception函数,直到产生一个响应给process_response,
	如果一直没有生成响应,就会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值