Django |将子域捕获为字符串

时间:2010-06-02 17:44:22

标签: django

如何捕获子域名的一部分,并通过请求在我的视图中将该名称作为字符串获取。

例如:

user.domain.com
developer.domain.com

我想通过请求捕获此域名的user部分(假设用户第一次点击该页面时)。

感谢。

1 个答案:

答案 0 :(得分:1)

可以使用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访问子域名(例如在视图中,我认为您需要它)