Django----之中间建

中间键就是类里面有五个方法按顺序执行中间键口子轻量级底层插件系统

中间键可以做反扒虫,做流量统计,做ip黑名单,看ip访问频率放到一个列表中,
request>中间键口子1>url>口子2>view>(有错误执行)口子3>口子4>respomse或口子5>render
request.META.get('HTTP_USER_AGENT',None)获得浏览器信息。META是头文件信息
请求时顺序执行中间键,返回时是反方向执行。中间键的顺序不能改变
python managy.py runserverse 0.0.0.0:8000可以让其他网址访问

中间件的5中方法

process_request(self,request)

process_view(self, request, callback, callback_args, callback_kwargs)

process_exception(self, request, exception)

process_response(self, request, response)

process_template_response(self,request,response)

  • 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
  • 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中
  • 每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个
    • _init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
    • process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    • process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    • process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
    • process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
    • process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
  • 使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法
  • 示例:自定义异常处理
  • 与settings.py同级目录下创建myexception.py文件,定义类MyException,实现process_exception方法

from django.http import HttpResponse

class MyException():

    def process_exception(request,response, exception):

        return HttpResponse(exception.message)

  • 将类MyException注册到settings.py中间件中

MIDDLEWARE_CLASSES = (

    'test1.myexception.MyException',

    ...)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值