django-easy-timezones
                                
                                 django-easy-timezones copied to clipboard
                                
                                    django-easy-timezones copied to clipboard
                            
                            
                            
                        Easy timezones for Django based on GeoIP

django-easy-timezones 
Easy IP-based timezones for Django (>=1.7) based on MaxMind GeoIP, with IPv6 support.
Quick start
- 
Install django-easy-timezones pip install django-easy-timezones
- 
Add "easy-timezones" to your INSTALLED_APPS setting like this: INSTALLED_APPS = ( ... 'easy_timezones', )
- 
Add EasyTimezoneMiddleware to your MIDDLEWARE_CLASSES MIDDLEWARE_CLASSES = ( ... 'easy_timezones.middleware.EasyTimezoneMiddleware', )
- 
(Optionally) Add a path to the MaxMind GeoIP cities databases (direct link because I'm nice) in your settings file: GEOIP_DATABASE = '/path/to/your/geoip/database/GeoLiteCity.dat' GEOIPV6_DATABASE = '/path/to/your/geoip/database/GeoLiteCityv6.dat'
- 
Enable localtime in your templates. {% load tz %} The UTC time is {{ object.date }} {% localtime on %} The local time is {{ object.date }} {% endlocaltime %}
- 
Twist one up, cause you're done, homie! 
Signals
You can also use signals to perform actions based on the timezone detection.
- 
To hook into the Timezone detection event to, say, save it to the request's user somewhere more permanent than a session, do something like this: from easy_timezones.signals import detected_timezone @receiver(detected_timezone, sender=MyUserModel) def process_timezone(sender, instance, timezone, **kwargs): if instance.timezone != timezone: instance.timezone = timezone instance.save()