- November 25, 2008
- decorator domain preferred-domain
- 0 (after 0 ratings)
From time to time I often have to work with a site that has two domain names. This can be an issue when dealing with mapping api keys so to solve this problem I whipped up a decorator function that allows a preferred domain to be enforced on a per view basis.
It wouldn't be too much to take this onto a middleware, but for my usage I just wanted a per view granularity and a decorator function suited my needs quite nicely.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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