美文网首页
Django 中间件

Django 中间件

作者: 水君子Z | 来源:发表于2019-05-03 22:31 被阅读0次

Django内置了一些中间件函数,方便我们在不同的时机,做一些相对的处理。
由于我是做前端的,学了中间件感觉跟vue中的生命周期钩子有些类似。
首先要做的是:在应用文件夹下新建一个 middleware.py 文件,我是跟views.py放在同一个目录


图片.png

在新创建的文件中定义一个类,继承object

class BlockMiddleware(object):
    '''中间件类'''
    def __init__(self):
        print('-'*20)
        print('init函数调用,是在接收第一个请求时')

    def process_request(self,request):
        print('-' * 20)
        print('process_request函数调用,是在产生request对象之后,url匹配之前')

    def process_view(self,request,view_func,*view_args,**view_kwargs):
        print('-' * 20)
        print('process_view函数调用,是在url配置调用之后,视图调用之前')

    def process_response(self,request,response):
        print('-' * 20)
        print('process_response函数调用,是在视图函数调用之后,内容返回浏览器之前')
        return response

然后在settings.py文件下注册刚刚写的类


图片.png

接下来运行程序会发现函数被依次调用


图片.png
注意点:
from django.http import HttpResponse
class BlockMiddleware(object):
    '''中间件类'''
    def __init__(self):
        print('-'*20)
        print('init函数调用,是在接收第一个请求时')

    def process_request(self,request):
        # 需要注意的是如果这里被return 那么django接下来会忽略url配置、process_view与调用view
        # 直接跳到 process_response 函数去执行
        print('-' * 20)
        print('process_request函数调用,是在产生request对象之后,url匹配之前')
        return HttpResponse('<p>跳出</p>')

    def process_view(self,request,view_func,*view_args,**view_kwargs):
        # 需要注意的是如果这里被return 那么django不会调用view
        # 直接跳到 process_response 函数去执行
        print('-' * 20)
        print('process_view函数调用,是在url配置调用之后,view视图调用之前')

    def process_response(self,request,response):
        print('-' * 20)
        print('process_response函数调用,是在视图函数调用之后,内容返回浏览器之前')
        return response

这里修改了process_request函数,return了一个p标签。
然后可以看到,输出顺序和页面的显示都发送了变化:

图片.png
图片.png

相关文章

  • Django 中间件

    1.什么是Django的中间件? django 中的中间件(middleware),在django中,中间件其实就...

  • 13.中间件和上下文处理器

    中间件 中间件的引入image.png django中的中间件django 中的中间件(middleware),在...

  • 什么是Django中的中间件?

    什么是Django中的中间件? 中间件 Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的...

  • Django_中间件

    Django的中间件的简介 Django的中间件类似于linux中的管道符Django的中间件实质就是一个类,类之...

  • django middleware

    参考:Django 源码学习(3)——中间件Django Middleware官方文档Django==2.0.4源...

  • Django的生命周期

    Django的生命周期 一. Django HTTP请求流程图 二. 中间件 什么是中间件 中间件是一个用来处理D...

  • Django 十一

    目录 1.cbv加装饰器 总结 2.中间件介绍和常用内置中间件 3.django内置中间件 4.django自定义...

  • Django中间件和上下文处理器

    中间件的引入:Django中间件(Middleware)是一个轻量级、底层的“插件”系统,可以介入Django的请...

  • Django 中间件

    django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,dj...

  • 使用 Django 中的 csrf 处理

    Django中有一个django.middleware.csrf.CsrfViewMiddleware中间件提供了...

网友评论

      本文标题:Django 中间件

      本文链接:https://www.haomeiwen.com/subject/hnxtoqtx.html