zoukankan      html  css  js  c++  java
  • django中间件

    process_request:

    1 是在视图执行前执行的

    2 它的顺序是从上往下执行

    3 返回值是None,继续向后执行

    4 返回值是HttpResponse的对象,执行对应中间件的process_response方法,接着往上走,最后返回给浏览器

    process_response:

    1 是在视图执行后执行的

    2 它的顺序是从下往上执行

    3 返回值必须是HttpResponse对象,继续往上执行

    process_view:

    1 在视图函数执行前执行,在process_request执行后执行

    2 它的执行顺序是从上往下

    3 返回值是None,继续向后执行

    4 返回值是HttpResponse的对象,执行最后一个中间件的process_response方法,接着向上执行,返回给浏览器

     process_exception

    1 报错才执行

    2 在视图函数执行之后,process_response之前

    3 他的顺序是从下往上

    4 返回值是HttpResponse的对象,执行最后一个中间件的process_response方法,接着往上,返回给浏览器

    process_template_response:

    1 视图返回的对象有render方法才执行

    2 在视图函数之后,process_response之前

    3 它的顺序是从下往上

    4 返回值是HttpResponse对象

    5 执行完所有的中间件的process_template_response之后,才执行对象.render()方法,得到一个新的HttpResponse的对象,交给process_response继续执行

    中间件版本的登录验证

    from django.utils.deprecation import MiddlewareMixin
    from django.shortcuts import HttpResponse,redirect
    
    class Auth(MiddlewareMixin):
    
        white_list = ['/login/', ]  # 白名单
        black_list = ['/black/', ]  # 黑名单
        def process_request(self,request):
            user=request.session.get('user')
            url=request.path_info
            if url in self.black_list:
                return HttpResponse('this is a illegal URL.')
            elif url in self.white_list or user:
                return
            else:
                #return redirect('/login/')
                return redirect("/login/?next={}".format(url))
  • 相关阅读:
    C#网络安全的一个不错的站点
    SP2已经发布,明天MS要发布一个Exchange的package
    Python学习足迹(3)
    用例子来彻底搞明白Virtual 和 非 virtual(C#)
    概述Web编程的安全极其防护措施(主要针对PHP,PERL)[]
    Java序列化
    Mybatis缓存及原理
    代理模式
    Spring的依赖注入
    Mybatis运行流程
  • 原文地址:https://www.cnblogs.com/hexintong/p/10109339.html
Copyright © 2011-2022 走看看