django-easy-timezones-redux
Easy IP-based timezones for Django (>=1.11) based on MaxMind GeoIP, with IPv6 support.
Updated fork of django-easy-timezones
that uses the new version of MaxMind's GeoIP2 database.
Quick start
-
Install django-easy-timezones-redux
pip install django-easy-timezones-redux
-
Add "easy-timezones" to your INSTALLED_APPS setting like this:
INSTALLED_APPS = (
...
'easy_timezones',
)
-
Add EasyTimezoneMiddleware to your MIDDLEWARE
MIDDLEWARE = (
...
'easy_timezones.middleware.EasyTimezoneMiddleware',
)
-
Add a path to the MaxMind GeoLite2 cities databases in your settings file:
GEOIP2_DATABASE = '/path/to/your/geoip/database/GeoLite2-City.mmdb'
-
Enable localtime in your templates.
{% load tz %}
The UTC time is {{ object.date }}
{% localtime on %}
The local time is {{ object.date }}
{% endlocaltime %}
-
That's it!
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()