Вы можете использовать какое-то пользовательское промежуточное ПО для перехвата запроса и получения с него субдомена. Следующий код извлечет поддомен и перенаправит на представление путем обращения именованного URL .
Поместите его в файл middleware.py в своем приложении.
Убедитесь, что вы установили промежуточное ПО в файле settings.py.
Убедитесь, что вы назвали свой вид в urls.py
middleware.py
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
import re
subdomain_pattern = re.compile('(?P<subdomain>.*?)\..*?')
class SubdomainMiddleware(object):
def process_request(self, request):
match = subdomain_pattern.match(request.get_host())
subdomain = match.group('subdomain')
redirect_url = reverse('groups_detail', args=[subdomain])
return HttpResponseRedirect(redirect_url)
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
url(r'^groups/(?P<name>.+)/$', 'groups.views.detail', {}, name='group_detail'),
)
Примечание: этот код не проверен.
Перенаправление может изменить внешний вид URL. Если вы хотите избежать этого, просто вызовите связанный вид, захватите его результат и верните его в HttpResponse()
.