from django.http import HttpResponse, HttpResponseRedirect from django.contrib.sites.models import Site def prefered_domain(fn): """ Allows for a preferred domain name to be enforced on a per_view basis if no domain is found, it fails silently. """ def _prefered_domain(request, site_id=1): try: site = Site.objects.get(id=site_id) if request.META['HTTP_HOST'] not in site.domain: return HttpResponseRedirect('http://%s%s' % (site.domain, request.META['PATH_INFO']) ) except Site.DoesNotExist: pass return fn(request) return _prefered_domain