四、中间件

一、定义中间件:

def bookmiddleware(get_response):

    # 这里是 init的地方
    # 类似于 flask中的 before_first_request
    # 第一次请求前会执行这里,我们可以在这里做一些初始化工作
    print('init')

    def middleware(request):

        # 请求前
        # 类似于flask 的 before_request
        print('befor request')
        response = get_response(request)

        # 相应后
        # 类似于flask 的 after_request
        print('after_request')

        return response


    return middleware


def bookmiddleware2(get_response):

    # 这里是 init的地方
    # 类似于 flask中的 before_first_request
    # 第一次请求前会执行这里,我们可以在这里做一些初始化工作
    print('init2222222222')

    def middleware(request):

        # 请求前
        # 类似于flask 的 before_request
        print('befor request2222222222')
        response = get_response(request)

        # 相应后
        # 类似于flask 的 after_request
        print('after_request2222222222')

        return response


    return middleware

二、在 中注册中间件:

# 中间件
# 类似于Flask中的钩子函数
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',

    # 注册我们定义的中间件
    'book.middleware.bookmiddleware',
    'book.middleware.bookmiddleware2',
]

三、中间件的执行顺序:

中间件的执行顺序

1 > 2 >2 >1

你可能感兴趣的:(四、中间件)