2010-06-02 68 views
1

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

例如:

user.domain.com 
developer.domain.com 

我想通过请求捕捉到了这个域名的user部分(让当第一次用户点击页面说的)。

谢谢。

回答

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 

我从什么地方得到这个代码,并修改了一些,但我不记得它最初是从。

只需将其放在某个文件的某个文件中,然后将其添加到settings.pyMIDDLEWARE_CLASSES列表中。

然后,只要有请求,您就可以使用request.subdomain访问子域(例如,在视图中,我假设您将需要它)