自定义中间件;

自定义中间件

创建一个mymiddleware.py


def simple_middleware(get_response):
    # 中间件工厂, 生成一个中间件
    # get_response
    # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
    # print('1,初始化中间件了....')
    def middleware(request):
        # 此处编写的代码会在每个请求处理视图前被调用。
        print('1.处理request前')
        request.abc = 123
        try:
            response = get_response(request)
        except:
            pass
        print('1.处理request后, 拿到了response')
        response.status_code = 222
        # 此处编写的代码会在每个请求处理视图之后被调用。
        return response
    return middleware
def simple_middleware2(get_response):
    # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
    print('2.初始化中间了....')
    def middleware(request):
        # 此处编写的代码会在每个请求处理视图前被调用。
        print('2.处理request前')
        response = get_response(request)
        print('2.处理request后, 拿到了response')
        # 此处编写的代码会在每个请求处理视图之后被调用。
        return response
    return middleware
注册到 Settings.py
MIDDLEWARE = [
'app1.mymiddleware.simple_middleware',
'app1.mymiddleware.simple_middleware2',
]

到视图view写

def my_decorator(func):
    def wrapper(request, *args, **kwargs):
        print('自定义装饰器被调用了')
        print('请求路径%s' % request.path)
        return func(request, *args, **kwargs)
    return wrapper
# @method_decorator(my_decorator, name='get')  # 正常
# @method_decorator(my_decorator, name='dispatch')  # 正常, 也可以给  view 方法加装饰器
# @method_decorator(my_decorator)  #  错误

class IndexView(View):
    def get(self, request):
        # 处理get请求
        print(request.user)
        print('======',request.abc)
        return HttpResponse('类视图, 处理get请求')
    def post(self, request):
        return HttpResponse('类视图, 处理post请求')
    def put(self, request):
        return HttpResponse('类视图, 处理put请求')
    def delete(self, request):
        return HttpResponse('类视图, 处理delete请求')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值