• django中间件


    process_request:

    1 是在视图执行前执行的

    2 它的顺序是从上往下执行

    3 返回值是None,继续向后执行

    4 返回值是HttpResponse的对象,执行对应中间件的process_response方法,接着往上走,最后返回给浏览器

    process_response:

    1 是在视图执行后执行的

    2 它的顺序是从下往上执行

    3 返回值必须是HttpResponse对象,继续往上执行

    process_view:

    1 在视图函数执行前执行,在process_request执行后执行

    2 它的执行顺序是从上往下

    3 返回值是None,继续向后执行

    4 返回值是HttpResponse的对象,执行最后一个中间件的process_response方法,接着向上执行,返回给浏览器

     process_exception

    1 报错才执行

    2 在视图函数执行之后,process_response之前

    3 他的顺序是从下往上

    4 返回值是HttpResponse的对象,执行最后一个中间件的process_response方法,接着往上,返回给浏览器

    process_template_response:

    1 视图返回的对象有render方法才执行

    2 在视图函数之后,process_response之前

    3 它的顺序是从下往上

    4 返回值是HttpResponse对象

    5 执行完所有的中间件的process_template_response之后,才执行对象.render()方法,得到一个新的HttpResponse的对象,交给process_response继续执行

    中间件版本的登录验证

    from django.utils.deprecation import MiddlewareMixin
    from django.shortcuts import HttpResponse,redirect
    
    class Auth(MiddlewareMixin):
    
        white_list = ['/login/', ]  # 白名单
        black_list = ['/black/', ]  # 黑名单
        def process_request(self,request):
            user=request.session.get('user')
            url=request.path_info
            if url in self.black_list:
                return HttpResponse('this is a illegal URL.')
            elif url in self.white_list or user:
                return
            else:
                #return redirect('/login/')
                return redirect("/login/?next={}".format(url))
  • 相关阅读:
    SQL Server 2005 全文搜索包括改进和更新的干扰词文件FROM MS KB
    服务器内存选项From MS
    跳过事务复制中的错误
    WP7基础补充
    TaoBaoAPI简介3
    登录功能代码
    TaoBaoApI简介1
    TaoBaoAPI简介2
    WP7基础学习第十三讲
    WP7基础学习第十四讲
  • 原文地址:https://www.cnblogs.com/hexintong/p/10109339.html
Copyright © 2020-2023  润新知