"""This Middleware compresses the HTML Output at the End. It strips the Spaces
between Tags, an at the beginning and the end of the content."""
from django.utils.html import strip_spaces_between_tags
class CompressHtmlMiddleware:
"""This Middleware compresses strips the spaces between tags, and at the
beginning and the end of the content."""
def __init__(self, get_response):
"""
:param get_response:
"""
self.get_response = get_response
def __call__(self, request):
"""
:param request:
:return:
"""
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
if 'text/html' in response['Content-Type']:
response.content = strip_spaces_between_tags(
response.content).strip()
return response
class SetRemoteAddrFromForwardedFor:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
def process_request(self, request):
try:
real_ip = request.META['HTTP_X_FORWARDED_FOR']
real_ip = real_ip.split(",")[0]
except KeyError:
pass
else:
# HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs.
# Take just the first one.
request.META['REMOTE_ADDR'] = real_ip