Python - Django - 中间件 process_exception


process_exception(self, request, exception) 函数有两个参数,exception 是视图函数异常产生的 Exception 对象

process_exception 函数的执行顺序是按照 settings.py 中设置的中间件的顺序的倒序执行

process_exception 函数只在视图函数中出现异常的时候才执行,它返回的值可以是 None,也可以是一个 HttpResponse 对象

如果返回 None,则继续由下一个中间件的 process_exception 方法来处理异常

如果返回 HttpResponse,将调用中间件中的 process_response 方法

middleware_test.py:

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse


class Test(MiddlewareMixin):
    def process_request(self, request):
        print("这是一个中间件 --> test")

    def process_exception(self, request, exception):
        print("这里是 Test 的 process_exception")
        print(exception)


class Test2(MiddlewareMixin):
    def process_request(self, request):
        print("这是一个中间件 --> test2")

    def process_exception(self, request, exception):
        print("这里是 Test2 的 process_exception")
        print(exception)

views.py:

from django.shortcuts import HttpResponse


def index(request):
    print("这里是 index 页面")
    raise ValueError("这是一个错误")
    return HttpResponse("这里是主页面 index")

访问,http://127.0.0.1:8000/index/

 

运行结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM