The 1000 most popular* Django packages
* looking at GitHub stars and PyPI download numbers
Django’s package ecosystem is one of its biggest strengths as a web framework, and a key strength of Wagtail as well. Our users value the CMS user experience just as much as the Python / Django foundations that make it super flexible. But it’s hard to convey that ecosystem strength! We’ve made many attempts at quantifying it in the past, in addition to showcasing our Wagtail-specific package ecosystem. Here’s another attempt, with a format that supports a more ecosystem-wide quantitative assessment of packages’ popularity.
Defining popularity
For the purpose of this analysis, we’re using two imperfect metrics that have the benefit of being widely available: PyPI download counts as a proxy for "usage" of a package, and GitHub stars as a proxy for the "mindshare" or "attention" the package receives. We can use those two metrics to then rank packages into four quadrants:

- High visibility: the buzz-heavy packages, with relatively high stars and low downloads
- Popular: for packages with high stars and downloads
- Under the radar: low stars and downloads
- Infrastructure: the unsung heroes; high downloads and low attention.
Since we only want the top 1000 or so packages, we’ll also filter to only show packages above a certain downloads threshold. Here’s what the data looks like in practice, after processing:

We can see a rough correlation between high downloads and high star counts, those there are plenty of outliers. Check it out in interactive mode on ObservableHQ with all packages plotted, as well as more info about the metholodogy.
Packages by quadrant
Unpacking the results a bit, here are the top results per quadrant.
High visibility
Ordered by star count, those packages that proportionally have very high GitHub Stars for low download counts - they’ve captured developers’ attention / mindshare, but that’s not (yet?) translated into high downloads:
- django-unicorn (2611 stars)
- django-material (2541 stars)
- django-tenant-schemas (1508 stars)
- django-ledger (1297 stars)
- django-payments (1184 stars)
- django-admin-honeypot (1074 stars)
- django-rest-framework-social-oauth2 (1068 stars)
- django-controlcenter (1002 stars)
- django-baton (979 stars)
- django-cities (945 stars)
- django-cache-machine (885 stars)
- django-bolt (823 stars)
- coderedcms (752 stars)
- django-mongoengine (751 stars)
- django-adminactions (697 stars)
- django-photologue (676 stars)
- django-request (659 stars)
- django-rest-framework-mongoengine (620 stars)
- django-comments-xtd (617 stars)
- django-machina (600 stars)
Popular options
Now looking into packages that are in the top 50% by both downloads and star count. This time ordered by geometric mean, to factor in both metrics. Those packages are safe bets if you’re considering dependencies that are in heavy use across the Django ecosystem.
- djangorestframework
- django-cors-headers
- django-extensions
- django-debug-toolbar
- django-filter
- wagtail (wuhuu!)
- djangorestframework-simplejwt
- django-ninja
- django-redis
- django-storages
- drf-spectacular
- django-silk
- django-crispy-forms
- django-environ
- drf-yasg
- django-oauth-toolkit
- django-model-utils
- django-import-export
- django-stubs-ext
- django-stubs
- django-celery-beat
- django-simple-history
- django-taggit
- django-compressor
- django-reversion
- django-mptt
- django-phonenumber-field
- django-guardian
- django-prometheus
- django-anymail
- django-widget-tweaks
- django-cms
- django-polymorphic
- django-webpack-loader
- django-unfold
- django-health-check
- django-axes
- drf-nested-routers
- django-tables2
- django-two-factor-auth
- django-countries
- django-grappelli
- django-ckeditor
- django-hijack
- django-ratelimit
- django-ipware
- django-constance
- djangorestframework-jwt
- django-fsm
- django-htmx
Under the radar
There are many interesting packages in this category but they don’t necessarily come through in the data-driven quantitative assessment, as they’re just not there yet in download numbers nor stars!
Infrastructure packages
Last but certainly not least, we can take a look at packages that score in the top 50% on downloads but not so high on star counts. Those are the "unsung heroes" of the ecosystem, possibly getting usage as transitive dependencies in other packages rather than directly chosen by developers for their specific sites or apps:
- django-js-asset
- drf-spectacular-sidecar
- django-pgactivity
- django-pglock
- django-scim2
- django-fernet-fields-v2
- django-pgmigrate
- django-statsd
- drf-exceptions-hog
- django-allow-cidr
- django-fake-model
- djangorestframework-role-filters
- django-deprecation
- django-permissionedforms
- djangorestframework-xml
- django-crum
- drf-orjson-renderer
- django-permissions-policy
- django-templated-mail
- djangorestframework-types
- django-datadog-logger
- django-statici18n
- dj-inmemorystorage
- dj-email-url
- django-clone
- django-cache-url
- django-filter-stubs
- django-fernet-encrypted-fields
- django-session-timeout
- django-channels
Navigating the ecosystem
This kind of data-driven representation definitely helps in navigating so many options, so you can understand which ones are seeing real-world use. Other directories of the ecosystem like Django Packages or Awesome Django can become unwieldy as the number of options adds up over the years.
It’s a tricky problem to convey this in marketing material when pitching the Django ecosystem - and perhaps a long-term web app could help here? To visualize "currently-maintained, popular packages" as well as trends in usage, mindshare, and maintenance over the years.
As for Wagtail, if you want to help us with mindshare… consider voting for us in the CMS Critic awards! We’re trying hard to outvote the PHP ecosystem there 💪