Easily set a localized timezone for users
The full documentation is at https://awesome-django-timezones.readthedocs.io.
Install Awesome Django Timezones:
pip install awesome-django-timezones
Add it to your INSTALLED_APPS
:
INSTALLED_APPS = (
...
'awesome_django_timezones',
...
)
Add DjangoTimezonesMiddleware to your MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = (
...
'awesome_django_timezones.middleware.TimezonesMiddleware',
...
)
Add js/awesome_django_timezones.js
to your base template
<script src="{% static 'awesome_django_timezones/js/awesome_django_timezones.js' %}"></script>
(Optional) If you need Django to be timezone aware on the Admin page, you will have to extend the
Admin base.html
in your_project/templates/admin/base.html
{% extends 'admin/base.html' %}
{% load static %}
{% block footer %}
{{ block.super }}
<script src="{% static 'js/awesome_django_timezones.js' %}"></script>
{% endblock %}
- Provides an accurate method of determining the an end user's timezone and activating that timezone in Django.
- Uses client side, JavaScript detection for the most accurate method of determining a timezone.
- Uses the widely supported, native Intl JavaScript library to detect the client's timezone. This library is not currently implemented for IE11.
- Falls back to server side timezone detection via an IP API.
- Fall back is provided for IE11 clients or clients with JavaScript disabled.
- Relies on third-party IP API lookups by https://ipapi.co. Consider purchasing a plan if you need more than 30k IP lookups/month or if you need support (no affiliation).
- Set a fallback timezone to always use in case a timezone can't be found with
AWESOME_TZ_DEFAULT_TZ
in yoursettings.py
. (Be sure to use the "TZ database name" column from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install -r requirements_test.txt (myenv) $ tox
Tools used in rendering this package: