Это можно сделать с помощью middleware .
Вот то, что я использовал ...
class SubdomainMiddleware:
""" Make the subdomain publicly available to classes """
def process_request(self, request):
domain_parts = request.get_host().split('.')
if (len(domain_parts) > 2) or (len(domain_parts) == 2 and domain_parts[1].find('localhost') != -1):
subdomain = domain_parts[0]
if (subdomain.lower() == 'www'):
subdomain = None
domain = '.'.join(domain_parts[1:])
else:
subdomain = None
domain = request.get_host()
request.subdomain = subdomain
request.domain = domain
Я получил этот код откуда-то и немного его модифицировал, хотя не могу вспомнить, откуда он был изначально.
Просто поместите это в файл где-нибудь, затем добавьте его в список MIDDLEWARE_CLASSES
в settings.py
.
Затем вы сможете получить доступ к поддомену, используя request.subdomain
везде, где доступен запрос (например, в представлениях, где, я полагаю, он вам понадобится)