Skip to content

Instantly share code, notes, and snippets.

@arulmr
Last active May 30, 2020 07:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save arulmr/f3bf067d8d5c714b57a0 to your computer and use it in GitHub Desktop.
Save arulmr/f3bf067d8d5c714b57a0 to your computer and use it in GitHub Desktop.
Getting user timezone from IP in Django
import pytz
from django.utils import timezone
....
timezone.activate(pytz.timezone(user_time_zone))
from ipware.ip import get_real_ip
....
ip = get_real_ip(request)
import requests
....
freegeoip_response = requests.get('http://freegeoip.net/json')
freegeoip_response_json = freegeoip_response.json()
user_time_zone = freegeoip_response_json['time_zone']
class UserTimezoneMiddleware(object):
""" Middleware to check user timezone. """
def process_request(self, request):
user_time_zone = request.session.get('user_time_zone', None)
try:
if user_time_zone is None:
freegeoip_response = requests.get('http://freegeoip.net/json/{0}'.format(ip))
freegeoip_response_json = freegeoip_response.json()
user_time_zone = freegeoip_response_json['time_zone']
if user_time_zone:
request.session['user_time_zone'] = user_time_zone
timezone.activate(pytz.timezone(user_time_zone))
except:
pass
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment