Skip to content
This repository was archived by the owner on Jun 30, 2026. It is now read-only.

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

Contributing

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages