middleware.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from __future__ import unicode_literals
  2. from django.http import Http404, HttpResponse
  3. from django.template import engines
  4. log = []
  5. class BaseMiddleware(object):
  6. def __init__(self, get_response):
  7. self.get_response = get_response
  8. def __call__(self, request):
  9. return self.get_response(request)
  10. class ProcessExceptionMiddleware(BaseMiddleware):
  11. def process_exception(self, request, exception):
  12. return HttpResponse('Exception caught')
  13. class ProcessExceptionLogMiddleware(BaseMiddleware):
  14. def process_exception(self, request, exception):
  15. log.append('process-exception')
  16. class ProcessExceptionExcMiddleware(BaseMiddleware):
  17. def process_exception(self, request, exception):
  18. raise Exception('from process-exception')
  19. class ProcessViewMiddleware(BaseMiddleware):
  20. def process_view(self, request, view_func, view_args, view_kwargs):
  21. return HttpResponse('Processed view %s' % view_func.__name__)
  22. class ProcessViewNoneMiddleware(BaseMiddleware):
  23. def process_view(self, request, view_func, view_args, view_kwargs):
  24. log.append('processed view %s' % view_func.__name__)
  25. return None
  26. class TemplateResponseMiddleware(BaseMiddleware):
  27. def process_template_response(self, request, response):
  28. response.template_name = engines['django'].from_string('template-response middleware')
  29. return response
  30. class LogMiddleware(BaseMiddleware):
  31. def __call__(self, request):
  32. response = self.get_response(request)
  33. log.append((response.status_code, response.content))
  34. return response
  35. class NotFoundMiddleware(BaseMiddleware):
  36. def __call__(self, request):
  37. raise Http404('not found')