如何使用Django将变量传递给异常中间件?

问题描述:

在django 1.10中,如何将变量传递给中间件异常处理程序?如何使用Django将变量传递给异常中间件?

在下面的示例中,我想访问process_exception()中的传递列表([1,2,3])。

views.py

class my_exception(Exception): 
    def __init__(self, value): 
     self.value = value 
    def __str__(self): 
     return repr(self.value) 

def my_view(request): 
    ... 
    my_var = [1,2,3] # Want to pass this to exception middleware 
    raise my_exception(my_var) 

middleware.py

from django.utils.deprecation import MiddlewareMixin 

class ExceptionMiddleware(MiddlewareMixin): 
    # Has been added to settings.py middleware list 
    def process_exception(self, request, exception): 
     if type(exception) == my_exception: 
      # How to access my_var here? 
     ... 
+2

难道只是'exception.value'吗?也许我错过了一些东西,但如果异常与您正在检查的类匹配,那么它应该有您用来创建它的数据。 – themanatuf

+0

是的,工作:)想要创建一个答案? – user984003

+0

刚刚做了,谢谢! – themanatuf

这纯粹是因为exception.value除了要检查的类相匹配。例外情况会包含您用来创建它的数据。