Django AOP

Django切入函数:在这里插入图片描述

构造函数__init__:没有参数,服务器响应第一个请求的时候自动调用,用户确认是否启用该中间件。

process_request(self,request):在执行分发器前被调用,每个请求上都会调用,不主动进行返回或者HttpResponse对象。

process_view(self,request,view_func,view_args,view_kwargs):在执行视图之前被调用,每个请求上都会调用,不主动进行返回或者HttpResponse对象。

process_template_response(self,request,response):在视图刚好执行完成后进行调用,每个请求都会调用,不主动进行返回或者HttpResponse对象。

process_response(self,request,response):所有响应返回浏览器之前调用,每个请求都会调用,不主动进行返回,或者返回HttpResponse对象。

process_exception(self,request,exception):当视图抛出异常时调动,不主动进行返回或者返回Httpresponse对象。

自定义中间件流程
1、在工程目录下创建middleware目录
2、目录中创建一个python文件
3、在python文件中导入中间件的基类
在这里插入图片描述

from django.utils.deprecation import MiddlewareMixin

4、在类中根据功能需求,创建切入需求类,重写切入点方法

from django.shortcuts import redirect
from django.urls import reverse
from django.utils.deprecation import MiddlewareMixin

# Mixin:混合多继承。
# 带有Mixin的类一般用作基类,或者是用作多继承使用。
class HelloMiddle(MiddlewareMixin):
    def process_request(self,request):
        print(request.META.get("REMOTE_ADDR"))

    def process_exception(self,request, exception):
        print(request, exception)
        return redirect(reverse('app:index'))

5、启用中间件,在settings中进行配置,MIDDLEWARE中添加middleware.文件名.类名

MIDDLEWARE = [
    "middleware.LearnMiddle.HelloMiddle",  # 自定义中间件
    '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',
]

AOP中间件:
实现统计功能
统计IP
统计浏览器

实现权重控制:
黑名单
白名单

实现反爬:
反爬虫
实现频率控制

应用交互友好化

中间件调用顺序:
中间件注册的时候是一个列表
如果没有在切点处直接返回,中间件会一次执行
如果我们直接进行了返回,后续的中间件就不再执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值