Django,解析二级子域名
1 写一中间件
class SubdomainMiddleware(object):
def process_request(self, request):
domain_parts = request.get_host().split(‘.’)
if len(domain_parts) == 3 and domain_parts[0] != ‘www’:
request.path_info = ‘/%s%s’ % (domain_parts[0], request.path)
2 加入settings.py 的中间件配置里
MIDDLEWARE_CLASSES = (
‘django.middleware.common.CommonMiddleware’,
‘test.base.middlewares.SubdomainMiddleware’,
…}
目前,Django还不支持域名的处理,URL的路由并不考虑host信息,因此对于晒课厅这样的项目,如果想使用二级域名作为学校的区分,就显得有些困难。
于是我们有必要想个办法解决这个问题。一个比较方便的做法是,使用middleware对URL做一些修改,通过一点技巧来让URL的路由“识别”二级域名。不难想到这样处理:
假设我们有两个二级域名需要放在一个Django项目里,分别是:www.shaiketing.com和thu.shaiketing.com,那么为了使用URL的路由,我们需要让路由系统知道我们访问的是www和thu,而路由系统并不关心host信息,所以我们只要让路由系统看到/www/和/thu/就好。因此,我们实际上是把这两个URL变成了www.shaiketing.com/www/和thu.sha