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!

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?

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.

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

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?

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.

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.

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.

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.

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.

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.

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?

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.

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,

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.

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

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.

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

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?

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.



Source link

Pin It on Pinterest

Shares
Share This