1 "Functions that help with dynamically creating decorators for views."
3 def decorator_from_middleware(middleware_class
):
5 Given a middleware class (not an instance), returns a view decorator. This
6 lets you use middleware functionality on a per-view basis.
8 def _decorator_from_middleware(view_func
, *args
, **kwargs
):
9 middleware
= middleware_class(*args
, **kwargs
)
10 def _wrapped_view(request
, *args
, **kwargs
):
11 if hasattr(middleware
, 'process_request'):
12 result
= middleware
.process_request(request
)
13 if result
is not None:
15 if hasattr(middleware
, 'process_view'):
16 result
= middleware
.process_view(request
, view_func
, *args
, **kwargs
)
17 if result
is not None:
20 response
= view_func(request
, *args
, **kwargs
)
22 if hasattr(middleware
, 'process_exception'):
23 result
= middleware
.process_exception(request
, e
)
24 if result
is not None:
27 if hasattr(middleware
, 'process_response'):
28 result
= middleware
.process_response(request
, response
)
29 if result
is not None:
33 return _decorator_from_middleware