• djabgo 中间件


    1.中间件是发生在request和response 之间,都会经过中间键,

    上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是必须继承MiddlewareMixin

    需要导入

    1
    from django.utils.deprecation import MiddlewareMixin

     

     1 from django.utils.deprecation import MiddlewareMixin
     2 from django.shortcuts import HttpResponse
     3 
     4 class Md1(MiddlewareMixin):
     5 
     6     def process_request(self,request):
     7         print("Md1请求")
     8  
     9     def process_response(self,request,response):
    10         print("Md1返回")
    11         return response
    12 
    13 class Md2(MiddlewareMixin):
    14 
    15     def process_request(self,request):
    16         print("Md2请求")
    17         #return HttpResponse("Md2中断")
    18     def process_response(self,request,response):
    19         print("Md2返回")
    20         return response
    Mymiddlewares

    结果:

    Md1请求
    Md2请求
    view函数...
    Md2返回
    Md1返回

    如果当请求到达请求2的时候直接不符合条件返回,即return HttpResponse("Md2中断"),程序将把请求直接发给中间件2返回,然后依次返回到请求者,结果如下:

    返回Md2中断的页面,后台打印如下:

    Md1请求
    Md2请求
    Md2返回
    Md1返回





     1 from django.utils.deprecation import MiddlewareMixin
     2 from django.shortcuts import redirect,HttpResponse,render
     3 class M1(MiddlewareMixin):
     4     def process_request(self,request):
     5         if request.path in ["/login/","/reg/"]:
     6             print(request.META.get("REMOTE_ADDR"))
     7             return None
     8         if not request.user.is_authenticated:
     9             return redirect("/login/")
    10 
    11 class M2(MiddlewareMixin):
    12     def process_request(self,request):
    13         if "128.0." in request.META.get("REMOTE_ADDR"):
    14             return redirect("/error/")
    15         else:
    16             return None
    关于控制登录和限制ip

    setting设置

    'app01.utils.middleware.M1',
  • 相关阅读:
    Spring+JCaptcha验证码使用示例
    Hibernate-Session使用的背后
    DWR+Spring配置使用
    Spring+Quartz配置定时任务
    利用HtmlParser解析网页内容
    利用HttpClient4访问网页
    利用Common-Fileupload上传文件图片
    利用Common-BeanUtils封装请求参数
    浮点数的一点东西
    基数排序——浮点数结构体进阶
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9893321.html
Copyright © 2020-2023  润新知