creating a custom django middleware

Post on 14-Apr-2017

312 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DJANGO MIDDLEWARE

Creating a custom

@andreagrandi

Andrea Grandi

DJANGO ARCHITECTURE

AVAILABLE HOOKS

• process_request(request)

• process_view( request, view_func, view_args, view_kwargs)

• process_exception(request, response)• process_template_response(request, response)• process_response(request, response)

(during a request)

(during a response)

THINGS TO KNOW WHEN YOU WRITE A MIDDLEWARE

• You need to write a class that just inherit from object

• The order in settings.py is important: middlewares are processed from top to bottom during a request and from bottom to top during a response.

• You don’t need to implement all the available methods of a middleware. For example you can just implement process_request and process_template_response

• If you implement process_request and you decide to return an HttpResponse, all the other middlewares, views etc… will be ignored and only your response will be returned

EXAMPLE: BENCHMARKMIDDLEWARE

from datetime import datetime class BenchmarkMiddleware(object): def process_request(self, request): request._request_time = datetime.now() def process_template_response(self, request, response): response_time = request._request_time - datetime.now() response.context_data['response_time'] = abs(response_time) return response

Thanks!

top related