Skip to content

vinitkumar/django-geoip-redirection

Repository files navigation

Build Status

Django-geoip-redirection

World Map

GeoIP based redirection is awesome and achieving it isn't too hard either. I wrote this middleware to ensure that my website would get redirected properly with regards to the location of the user accessing the website.

Usage:

Install via pypi: pip install django_geoip_redirection

Add the middleware in your settings file:

MIDDLEWARE_CLASSES = (
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'cms.middleware.language.LanguageCookieMiddleware',
  'django_geoip_redirection.middleware.LocationMiddleWare',
)

Also add django_geoip_redirection to INSTALLED APPS:

INSTALLED_APPS = (
  'django_geoip_redirection',
  ....
)

Customization:

# Change the array for extension as per country you 
# have to support
if request.path[:4] in ["/en/", "/nl/", "/in/"]:
    return None

if 'HTTP_X_FORWARDED_FOR' in request.META:
    request.META['REMOTE_ADDR'] = request.META['HTTP_X_FORWARDED_FOR']
ip_address = request.META['REMOTE_ADDR']
# get country name using Maxmind database.
# Now, just match and redirect.
# Likewise, replace the name of country to match and redirect.
country = get_country_request(ip_address)
if country == "India":
    return HttpResponseRedirect('/in/')
elif country == "Netherlands":
    return HttpResponseRedirect('/nl/')
else:
    return HttpResponseRedirect('/en/')
return None

You would also need to place the GeoIP.dat.dat present inside the data folder to your project root directory.

About

GeoIP based redirection middleware for django

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages