Timezone selection in Django
The pure magic that happens once you start a project in Django is one to behold. A lot has been handled for us, leaving one with ample time to focus on writing our app rapidly. Four files are generated which include: the settings.py, urls.py,wsgi.py, and manage.py.
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source. ~Django Documentation
Settings.py
Let's take a closer look at the settings page. This is where Django stores all the configuration for an app by default. In the absence of an environment variable, this is where Django looks for it by default. It is here where we:
- Register our apps
- Configure our databases
- Provide routing for the static files, media, and templates in our projects
- Change timezones
Fun Activity 😊
Let us create a scenario whereby we want to update our timezone from the default "UTC" to our current timezone. OK Yes, you can ask "uncle Google", check StackOverflow and your answer will be provided on a silver platter, it will only be a matter of copying and pasting.
But let us give ourselves a challenge and check our timezone from the pytz package using the python shell and basic python knowledge.
Check various timezones from the pytz python package
You will need the terminal/cmd, basic python knowledge, and teachability
Open your cmd/terminal and cd into your Django project and activate your virtual environment. Run the following commands:
python manage.py shell
The python shell is also known as the Python Interactive Shell. It is used to execute a single Python command and return a result.
Import the package called pytz and then call the module called pytz.all_timezones_set which contains all timezones of the world in the form of a python set
In [1]: import pytz
In [2]: pytz.all_timezones_set
Python Set Manipulation
We can choose to do it in many ways as there are many ways to kill a rat. Let us look at two methods:
- Using the set data type as it is
- Using a List data type
Let us Dive in!! 👌
1. Using the set data type (as is)
Using a list comprehension, loop through the pytz.all_timezones_set and assign each item to a variable x, using the if statement , check if a particular world/country name exists, in our case, we will check for Africa, and return all variable x's that contain the word specified
In [3]: new_timezone_set =[ x for x in pytz.all_timezones_set if 'Africa' in x]
In [4]: print(new_timezone_set)
As shown below we are now able to get a specified timezone name from the set using a list comprehension, for loop and if statement.
2. Using a List data type
First, convert the set to a list data type using: list() and assign it to a variable. This changes the set curly brackets {..} to the list square brackets [...]
new_list =list(pytz.all_timezones_set)
print(new_list)
Using the filter() and lambda function, check for a specified timezone name
In [9]: specific_timezone = filter(lambda a:'Africa' in a,new_list)
In [11]: print(list(specific_timezone))
Now, we can easily choose a specific timezone effortlessly and place it in your settings file as the set is now narrowed to specific timezones.
I hope, you enjoy the tutorial.
As always, stay safe and code on
Happy coding Pythonistas