Finding the Django Version
Ideally, every project will have a requirements.txt
 or setup.py
 file at the root directory, and it will have the exact Version of Django used for that project. Let's look for a line similar to this:
Django==1.5.9
Note
The version number is mentioned precisely (rather than Django>=1.5.9
), which is called pinning. Pinning every package is considered a good practice since it reduces surprises and makes your build more deterministic.
As a best practice, it is advisable to create a completely repeatable environment for a project. This includes having a requirements file with all transitive dependencies listed, pinning, and with --hash
 digests. --hash
 digests of the packages look like this:
Django==1.5.9 --hash=sha256:2cf24dba5fb0a30e26e83b2ac5...
Hashes protect against remote tampering and save the need to create private package index servers containing approved packages.
Unfortunately, there are real-world code bases where the requirements.txt
 file was not updated or...