3👍
✅
The 3rd party apps usually put this functionality into Middleware and use the process_request
hook to take care of subdomain recoginition and then perform appropriate redirect.
Example displaying custom middleware and use of process_request
from django-subdomains
class SubdomainMiddleware(object):
"""
A middleware class that adds a ``subdomain`` attribute to the current request.
"""
def get_domain_for_request(self, request):
"""
Returns the domain that will be used to identify the subdomain part
for this request.
"""
return get_domain()
def process_request(self, request):
"""
Adds a ``subdomain`` attribute to the ``request`` parameter.
"""
domain, host = map(lower,
(self.get_domain_for_request(request), request.get_host()))
pattern = r'^(?:(?P<subdomain>.*?)\.)?%s(?::.*)?$' % re.escape(domain)
matches = re.match(pattern, host)
if matches:
request.subdomain = matches.group('subdomain')
else:
request.subdomain = None
logger.warning('The host %s does not belong to the domain %s, '
'unable to identify the subdomain for this request',
request.get_host(), domain)
Source:stackexchange.com