Top 102 most downloaded Django packages in 2020

Image for post
Image for post

2020 is almost over, and it’s a good time to analyze what the most demanded Django packages in 2020 were.

There are pretty detailed PyPI package repository download statistics available at google cloud. Let’s explore the result of a simple query that collects the total number of downloads for any package with a name containingdjango.

Download count outperforms some packages that have been in use in the most active projects and doesn’t give the real count of a project’s users. But I think the whole dataset provides a good brief of what was used in 2020. If you know a good library that wasn’t on the list, please note it in the comments. I would be happy to update the article with it!

0. Django

In 2020 Django itself was downloaded over 65.5 million times! An amazingly great boost if you compare it with its 41 million downloads in 2019. Does this mean that Django gained +50% popularity or that CI/CD pipelines have become more widespread in development practice?

1. REST

Half of the Django installations happen in association with the REST Framework. djangorestframework packages were downloaded over 35 million times. Amazingly, the old, mistypeddjango-rest-framework package was requested 5 million times,.

The REST Framework forms its own set of the constellation of companion packages, which also ranks among the top of all downloads.

UPDATE: djoser — authentication packages for the REST Framework has 750208 downloads, a little away from top 100.

2. Development Utilities

Development process helpers is a very popular category of packages. The growing trend toward static typing pushes the type inference django-stubs package into the TOP 100. It seems, not everyone could upgrade Django to the latest version. In this case, the django-compactpackage helps in using new, modern Django features in legacy projects

3. ORM extensions and Form/Serializer fields

This is what we love about Django the most: rich queries and a lot of native DB type support out of the box and with many third-party packages.

Sometimes it’s even hard to choose. What will you use to get tree-structure support — django-treebead or django-mppt? How to keep a history of changes — in a single table with django-reversion or make a separate one for each model with django-simple-history?

4. Testing

The recent discussion about embedding pytest-django into the Django core revealed a lack of several important features. Even still, pytest is the most popular alternative test runner for Django projects.

5. Forms

Forms are an awesome part of Django that drastically reduce manual HTML coding. But you can’t improve on perfection. Plenty of packages allow for tuning form rendering in Django is in active use in 2020.

6. Cache

Django has perfect Memcache Cache backend integration out of the box, but Redis is still quite popular and could be enabled by one of two different third-party packages.

It doesn’t depend on what you are using for the cache backend: django-cacheops provides handy QuerySet caching and automatic granular event-driven invalidation shortcuts.

7. Settings

We all wish that Django default settings would be more deployment-friendly by default, but it seems only a fraction of Django projects using django-environ. Is everyone else happy with os.environ.get or don’t follow the twelve-factor app methodology?

UPDATE: The initial version of this post, missed dj-database-url package usage.

8. Background jobs

It could be the most important functionality in a lot of Django projects, but it’s hard to estimate the real usage. Recent versions of the Celery library work out of the box without any additional Django-specific glue. Celery is the most popular distributed task queue in the Python world. It has 35 million downloads.

UPDATE: Other celery competitors, are far away by downloads count dramatiq- 342 536 huey -330 942

9. Authentication and Authorization

External service integration is the most requested feature in the authentication category. Row-level permissions leader django-guardian has been on top for many years.

10. Shortcuts and helpers

Does Django core contain everything for comfortable development? Or are we still missing a couple of handy shortcuts that bring utility packages to the top of the download list?

11. Frontend tools

Are you surprised to see the frontend integration category only ranking in 11th place? I am too. Seems most of the projects use native JavaScript tools and don’t bother with Django integration.

12. Security

Django, by default, contains ClickJacking and CSRF attacks protection. Third-party packages provide generic rate-limiting and login attempt restrictions. django-csp even more, restricts JavaScript execution on the page mitigating the risk of content injection vulnerabilities such as cross-site scripting,

13. Mail

Again, the category of packages that extends Django core functionality with cloud services support. Single Amazon SES service seems as popular as all other transactional mail services together.

14. Monitoring

Helper tools to improve Django monitoring. We are missing Sentry here since it is hard to split its usage inside Django projects, but definitely with 42 million downloads over the year, Sentry is the leader in its own category

15. Administration

Django admin has become better and better over the years. Not so many packages are required to improve it more. But still, styles with a beautiful look and feel keep django-grappelli on top.

16. Search

The last category — full-text search support. Ever wonder what library to use in companion with ElasticSearch? Me too.

Other

Those packages that are so good they don’t have any competitors in their category in the TOP 100 downloads.

Keep static and media files in the cloud with django-storages, render cleaner templates with django-tables2, django-classy-tags and django-sekizai, and organize workflows with django-fsm.

django-heroku is the only package in the TOP 100 that helps with Django deployment. Isn’t this task so complex that no other packages are created?

Bonus +2

Several packages do not mention Django in their name. Wagtail has twice as many downloads as django-cms and definitely should be included in the TOP 100

The last version of Django has built-in async support. Does this mean that the popularity of the channels package would decline?

That’s all the TOP 100 by download count packages in the Django universe.

Dear Django devs, this is how we’ve spent 2020. Do you have an idea about what’s going to climb to the top in the next year? What packages are we missing? Have there been any new upcoming tools created recently? Post in the comments to get them raises in the article updates.

Happy coding, Merry Christmas and Happy New Year!

Written by

Reusable workflow library #django #python http://viewflow.io

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store