zoukankan      html  css  js  c++  java
  • 14-中间件和上下文处理器

    14-中间件和上下文处理器

    01-中间件

    02-上下文处理器

    01-中间件

    在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

    中间件的执行流程

    1、执行完所有的request方法 到达视图函数。

    2、执行中间件的其他方法

    2、经过所有response方法 返回客户端。

    注意:如果在其中1个中间件里 request方法里 return了值,就会执行当前中间的response方法,返回给用户 然后 报错。。不会再执行下一个中间件。

     

    也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。

    中间件中可以定义4个方法,分别是:

    中间件中可以定义5个方法,分别是:

    1. process_request(self,request) :执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    2. process_view(self, request, callback, callback_args, callback_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
    3. process_template_response(self,request,response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
    4. process_exception(self, request, exception) 当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
    5. process_response(self, request, response 所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象

    执行顺序也是按照以上顺序执行的.

     中间件注册

    中间件例子

     

    方法二:类的方式写中间件 

    02-上下文处理器

    上下文处理器放在项目目录下(context processors)
    上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,
    那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象
    Django中的Context Processor主要是应用于模板,完成页面的绘制的一些处理,也就是所说的页面渲染

    激活(注册):在 settings.py 文件里的 TEMPLATES  中的 OPTIONS  中的 'context_processors' 里面添加自定义的上下文处理器的全路径(添加到最后)

    自定义上下文管理器(返回必须是字典)

     自定义上下文管理器使用:{{ name }}

     

  • 相关阅读:
    【Android】Handler的应用(二):从服务器端加载JSON数据的优化
    [置顶] IOS 开发之 CocoaPods讲解
    POJ 1068 (13.10.11)
    android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
    C++笔记(1)
    WCF讲解
    php5 图片验证码一例
    PHP5 GD库生成图形验证码(汉字)
    mysql中limit的用法实例解析
    Limit参数优化MySQL查询的方法
  • 原文地址:https://www.cnblogs.com/jun-1024/p/10860887.html
Copyright © 2011-2022 走看看