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

    什么是中间件?

    可以介入django的请求和响应的轻量级的底层插件,它其实就是一个python类,我们在settings配置文件中的↓↓↓↓,都是中间件

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]

    这个python类中的方法运行于每个请求中(其中方法执行的位置为↓↓↓):

    方法:

    __init__ 不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件
    process_request(self,request)

    在分配url之前被调用,返回None或HttpResponse对象
    判断是否是多次请求(的攻击),

    process_view(self,request,view_func,view_args,view_kwargs) 调用视图views之前被调用,返回None或HttpResponse对象
    process_template_response(self,request,response)

    在视图views刚好执行完后(在view正要去匹配template的html的过程中)被调用,返回None或HttpResponse对象

    process_response(self,request,response)

    所有响应返回浏览器之前调用(templates要返回页面给浏览器了),返回HttpResponse对象

    process_exception(self,request,exception) 当视图抛出异常时调用,返回HttpResponse对象

    自定义中间件:

    1、创建中间件文件

    1. 在应用级myapp下写中间件函数
    2. 在项目下创建middleware目录,并在目录下创建myapp目录,在下面编写py文件
    3.  

    2、自定义中间件

    from django.utils.deprecation import MiddlewareMixin
    # 所有自定义中间件都要继承MiddlewareMixin模块
    
    class mymiddle(MiddlewareMixin):
        def process_request(self,request):
            print('get参数为:', request.GET.get('a'))

    3、使用自定义中间件

    配置settings.py 文件:MIDDLEWARE = ['middleware.myapp.myMiddle.MyMiddle',]   # 中间件函数的路径

    注:浏览器的每个请求都会执行中间件

  • 相关阅读:
    final方法修饰继承问题
    日期比较
    子类继承父类,初始化以及方法调用顺序
    linux机器上实现占用固定cpu使用率,并将程序绑定到固定cpu上
    【译】Rust宏:教程与示例(二)
    【译】Rust宏:教程与示例(一)
    【译】Async/Await(五)—— Executors and Wakers
    【译】Async/Await(四)—— Pinning
    通过工具dumpbin.exe快速查看dll的编译版本是Release还是Debug
    【常用操作】ubuntu部署说明
  • 原文地址:https://www.cnblogs.com/Vera-y/p/11961598.html
Copyright © 2011-2022 走看看