2010-06-02 69 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訪問子域(例如,在視圖中,我假設您將需要它)