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 }}

     

  • 相关阅读:
    ASP.NET MVC 中的视图生成
    atm
    Oracle 客户端 NLS_LANG 的设置(转)
    log4jdbc
    java基本类型作为成员变量时的初始值
    使用activeMQ实现jms
    JAVA反射机制
    [notes] ImageNet Classification with Deep Convolutional Neual Network
    cocos2d-x3.0 ListView
    Mean Shift具体介绍
  • 原文地址:https://www.cnblogs.com/jun-1024/p/10860887.html
Copyright © 2011-2022 走看看