Django--中间件详解

Django的中间件相当于一个轻量级,底层的插件系统,可以接入到Django的请求和响应的处理过程,修改Django的输入和输出.

中间件无侵入式的开发方式增强了django 的健壮性.

中间件的定义方法

在users应用中新建一个middleware.py文件,   

# 此文件中定义中间件,补充额外的业务逻辑

def my_middleware(get_response):
    print('init 被调用') # 此处代码仅在Django第一次配置和初始化的时候执行
    
    def middleware(request):

        print('before request 被调用')  # 此处代码在每个请求处理视图函数前被调用

        response = get_response(request)

        print('after response 被调用')  # 此处代码会在每个请求处理视图函数之后被调用
        
        return response

    return middleware

再定义另外一个中间件 middlware2

定义好中间件后,需要在settings.py 文件中添加注册中间件

# 中间件(flask请求勾子)
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',   #此处是csrf防护  注释代表不要csrf防护
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    # 注册中间件的地方
    'middleware.my_middleware',
    'middleware.my_middleware2',
]

定义视图函数测试:

def demo_view(request):
    print('view 视图被调用')
    return HttpResponse('OK')

注意:Django运行在调试模式下,中间件init部分有可能被调用两次。

执行结果:

init2 被调用
init 被调用
before request 被调用
before request 2 被调用
view 视图被调用
after response 2 被调用
after response 被调用


中间件的执行顺序:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值