Login

Preferred Domain decorator function.

Author:
jamiecURLe
Posted:
November 25, 2008
Language:
Python
Version:
1.0
Tags:
decorator domain preferred-domain
Score:
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

More like this

  1. Decorator cache handler per view by guicifuentes 6 years, 5 months ago
  2. Cache Any Function by jeffwheeler 7 years, 11 months ago
  3. Header view decorators by ydm 2 years ago
  4. decorator to add author to extra_fields in snippets 635 by gehel 6 years, 9 months ago
  5. Ignore HTTP Accept-Language headers by fonso 7 years, 10 months ago

Comments

Please login first before commenting.