creating a custom django middleware

7
DJANGO MIDDLEWARE Creating a custom @andreagrandi Andrea Grandi

Upload: andrea-grandi

Post on 14-Apr-2017

312 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Creating a custom Django Middleware

DJANGO MIDDLEWARE

Creating a custom

@andreagrandi

Andrea Grandi

Page 2: Creating a custom Django Middleware

DJANGO ARCHITECTURE

Page 3: Creating a custom Django Middleware

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)

Page 4: Creating a custom Django Middleware

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

Page 5: Creating a custom Django Middleware

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

Page 7: Creating a custom Django Middleware

Thanks!