Python-Django-Ajax进阶3

1 中间件

-是什么?

中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能

-怎么用:

 


-自定义中间件:

1 写一个类,继承MiddlewareMixin,
2 在类中写方法:
process_request
3 在settings中配置

from django.utils.deprecation import MiddlewareMixin

from django.shortcuts import render, HttpResponse


class mymiddleware1(MiddlewareMixin):
    def process_request(self, request):
        # print(request.path)
        # print(type(request))
        # request.aa='lqz'
        print('我是middle1的process_request方法')
        # 一旦returnHttpResponse对象,直接返回
        # return HttpResponse('我返回了')

    def process_response(self, request, response):
        # request就是请求对象
        # response就是响应对象
        print('我是middle1的process_response方法')
        # response.set_cookie('name','lqz')
        return response
    def process_view(self, request, callback, callback_args, callback_kwargs):
        # callback 是要执行的视图函数地址
        # callback_args是要执行的视图函数的位置参数(元组)
        # callback_kwargs是要执行的视图函数的关键字参数(字典)
        # print(type(callback))
        # print(callback_args)
        # print(callback_kwargs)
        # response=callback(request,*callback_args,**callback_kwargs)
        print('我是middle1的process_view方法')
        # 如果返回response,后面的process_view就不执行了,直接执行中间件的process_response方法
        # return response
    def process_exception(self, request, exception):
        #exception 异常对象
        print('我是m1的process_exception方法')

class mymiddleware2(MiddlewareMixin):
    def process_request(self, request):
        # print(request.path)
        # print(type(request))
        print('我是middle2的process_request方法')

    def process_response(self, request, response):
        print('我是middle2的process_response方法')
        return response

    def process_view(self, request, callback, callback_args, callback_kwargs):
        print('我是middle2的process_view方法')
    # 只有视图函数抛异常,才执行
    def process_exception(self, request, exception):
        print('我是m2的process_exception方法')
        print(str(exception))
        return HttpResponse('您的操作有误')

    def process_template_response(self, request, response):
        print('我是m2的process_template_response')
        return response

  

-5个方法(process_request,process_response)

-如果process_request方法返回HttpResponse的对象,请求直接返回,按中间件方法执行顺序往回走

2 csrf

xss攻击/csrf或xsrf跨站请求伪造
使用:中间件不注释,form表单中写{% csrf_token %}

转载于:https://www.cnblogs.com/du-jun/p/10311307.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值