zoukankan      html  css  js  c++  java
  • django middleware笔记

    1.自定义的middleware写好后,要注册在setting中。系统也自带若干middleware。

    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',
        'demo.auth.AuthMiddleware',
        #拦截器,子系统携带token去SSO server(SSO_URL),通过token查询user信息,
        # 并把user放入request.session,    # 查不到user则token为假的,验证错误
    ]

    2. 看实例,定义在demo.auth.py 文件中的AuthMiddleware class ,在setting.py中已经注册

    要求:

    (1)中间件类须继承自 django.utils.deprecation.MiddlewareMixin中间件类须实现下列五个方法中的一个或多个:

    def process_request(self, request): 执行视图之前被调用,在每个请求上调用回None或HttpResponse对象

    def process_view(self, request, callback, callback_args,callback_kwargs): 调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象

    def process_response(self, request, response): 所有响应返回浏览器之前被用,在每个请求上调用,返回HttpResponse对象

    def process_exception(self, request, exception): 当处理过程中抛出异常时用,返回一个HttpResponse对象

    def process_template_response(self, request, response): 在视图刚好执行之后被调用,在每个请求上调用,返回实现了render方法的响应对象

    注: 中间件中的大多数方法在返回None时表示忽略当前操作进入下一项事件,

    当返HttpResponese对象时表示此请求结果,直接返回给客户端。

    典型应用场景:

    可以使用中间键来增加验证码
    在爬虫scrapy框架中可以使用中间键来增加User-Agent 或者随机生成代理。

    参考了博客:https://blog.csdn.net/zsx2541577860/article/details/95041082

  • 相关阅读:
    程序员要善于在工作中找到偷懒的办法
    关于count(1) 和 count(*)
    前端设计+程序开发那点事
    关于MySQL Connector/C++那点事儿
    windows下编译php5.2.17这是闹哪样?
    easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
    视频文件自动转rtsp流
    Jenkins Pipeline如何动态的并行任务
    Jenkins的Dockerfile中如何批量迁移原Jenkins安装的插件
    Groovy中json的一些操作
  • 原文地址:https://www.cnblogs.com/lxgbky/p/12131518.html
Copyright © 2011-2022 走看看