DEV Community

Jack Linke
Jack Linke

Posted on

Modern Django Project Examples

I frequent the /r/django and /r/djangolearning subreddits, and a couple common questions come up regularly:

Picture of confused person

I worked on a little project this evening which will hopefully answer both of these questions, and provide some insight into modern django projects.


Background and Process

You can skip this section if you're in a hurry and just want the good stuff

In order to identify the most popular, up-to-date opensource django projects on GitHub, I began by performing a somewhat arbitrary API search of repositories using the following parameters:

  • contains the word "django" in name, description, or readme
  • repo language of python
  • 25+ stars
  • last pushed at least 2019-01-01 (this is pushes to any branch in the repo)
  • no private repos
  • no archived repos
  • total repo size of at least 500 kB

The resulting API URL is: https://api.github.com/search/repositories?page=1&q=django+in:name,description,readme+language:python+stars:>=25+pushed:>=2019-01-01+is:public+archived:false+size:>=500

Note: This search was conducted on 10 October 2019, so results may have changed since that date

The result of this query at the time that I ran it was exactly 1,000 repos, which conveniently happens to be the largest number of results you can actually process through the api. You can build a query that finds more than 1,000 results, but you can't view the info about more than 1,000 repos.

The "last_pushed" value is not particularly accurate for a project like this. Some projects use bots to keep requirements files updated, but the project at large hasn't been updated in years. To mitigate this issue, I used BeautifulSoup to check the repo's actual html page for the date last modified and removed any that were not in 2019. This is not an efficient process, but it worked.

For each resulting repo, I also performed a search to see if the repository contained a views.py or models.py file. If not, it was discarded from the list. I felt this was a decent way of filtering out repos that likely contained no actual django-related code. Possibility exists for false-positives and false-negatives, but it's better than no filtering at all.

I deleted django and django_rest_framework, because I felt they were somewhat outside of the scope of this project. I manually went through the resulting repos and deleted those which did not fit the intent of this project. For instance, repos with projects entirely in a language other than English, repos that clearly don't follow best practices, etc.

I also manually went through all remaining repos (450+) and removed any that weren't "projects". This included apps and tools meant to be instaled in a django project, tutorials, etc. I considered "projects" to be anything from company websites to complex web apps. These repos are generally either standalone projects or part of a larger project.

Last, I looked at the django version supported. I removed any repos that didn't support at least Django 1.10 (only a couple are 1.10. The remainder are 1.11 or above)

The final number of repos in my list was 130.

The remainder of this post is about the final remaining 130 django projects that are recently updated, at least somewhat popular, and somewhat substantial in size.


View Types

To get an idea of what views were in each project, I performed a regex match assuming the string "views" would be somewhere in the filepath (either a folder or in the file name), and that the string "tests" would not (I don't want test views). Here are the patterns I ended up with for identifying CBV and FBV:

patterns = ["^class\s.*View.*[)][:]$", "^def\s.*request.*[)][:]$"]

It seems to have worked pretty well. For the 130 repositories, 9,381 total views were identified.

Now for the interesting part - frequency of each type:

  • FBV: 50.26% (4,715 total)
  • CBV: 49.74% (4,666 total)

I think we can pretty definitely say that the decision of whether to use FBV or CBV is entirely up to what you are comfortable with and what makes sense in terms of flexibility and the DRY principle.

It's 50/50, so don't feel bad if you aren't using CBVs.

23 of the projects used only FBVs, 15 projects used only CBV, and 4 projects did not contain views. The remaining 88 projects used some combination of the two type of views.


The Projects

Here are the 130 django projects, sorted by number of repository commits. You may have to scroll right to view additional stats.

Project Description Days since last push Repo age In years Views Total FBVs CBVs Models Stars Forks Commits
addons-server 🕶 addons.mozilla.org Django app and API 🎉 2 5 181 151 30 89 597 405 44690
cfgov-refresh Django project protecting American consumers 2 5 44 24 20 108 118 80 17453
pootle Online translation tool 183 7 91 40 51 36 1212 269 16308
horizon OpenStack Dashboard (Horizon) 2 7 754 400 354 0 1118 1141 15353
geonode GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data. 2 9 164 130 34 58 803 740 14096
hydroshare HydroShare is a collaborative website for better access to data and models in the hydrologic sciences. 3 5 180 137 43 198 91 20 12062
onadata Collect, Analyze and Share 5 6 107 98 9 33 150 112 10192
usaspending-api An RESTful API for U.S. federal spending data. 2 3 160 30 130 72 115 44 10114
reviewboard An extensible and friendly code review tool for projects and companies of all sizes. 10 10 58 43 15 33 1228 364 9548
wagtail A Django content management system focused on flexibility and user experience 2 5 155 113 42 38 7938 1728 9364
site A modern open-source online judge frontend. 6 5 122 44 78 36 147 86 8888
aristotle-metadata-registry Aristotle-MDR is an open-source metadata registry as laid out by the requirements of the ISO/IEC 11179 specification. 1 5 265 38 227 89 69 55 8107
onlineweb4 Web pages for Online, Linjeforeningen for Informatikk at NTNU 2 7 233 133 100 77 36 13 7958
kitsune Platform for Mozilla Support 5 9 261 233 28 71 525 511 7314
djattendance A rewrite of the original attendance project in Python 9 6 369 92 277 118 30 21 6649
ion TJ Intranet 3 (Ion) 1 5 236 209 27 55 50 31 6156
evennia Python MUD/MUX/MUSH/MU* development system 10 5 25 4 21 13 987 439 5895
mytardis MyTardis - a data management system for private lab/facility data 2 7 102 98 4 38 64 59 5799
shuup E-Commerce Platform 3 4 296 41 255 146 1019 537 5684
seed Standard Energy Efficiency Data (SEED) Platform™ is a web-based application that helps organizations easily manage data on the energy performance of large groups of buildings. 8 4 66 27 39 43 61 43 5513
otm-core OpenTreeMap is a collaborative platform for crowdsourced tree inventory, ecosystem services calculations, urban forestry analysis, and community engagement. 96 6 161 158 3 38 129 68 5176
Misago Misago is fully featured modern forum application that is fast, scalable and responsive. 6 7 261 139 122 53 1723 369 5143
iati.cloud IATI.cloud extracts all published IATI XML files from the IATI Registry and stores them in a PostgreSQL database, that you can access using a RESTful API. 2 6 171 20 151 193 27 24 4701
refinebio Refine.bio harmonizes petabytes of publicly available biological data into ready-to-use datasets for cancer researchers and AI/ML scientists. 2 2 26 1 25 31 74 7 4038
feincms A Django-based CMS with a focus on extensibility and concise code 67 10 1 0 1 17 765 227 3892
taiga-back Agile project management platform. Built on top of Django and AngularJS 12 6 91 6 85 61 4963 966 3778
badgr-server Open Badge issuing and management with Django 3 4 88 9 79 42 134 71 3640
netbox IP address management (IPAM) and data center infrastructure management (DCIM) tool. 2 3 486 5 481 77 5709 1091 3534
amy A web-based workshop administration application built using Django. 8 4 124 56 68 35 52 49 3495
modoboa Mail hosting made simple 95 6 51 43 8 20 1374 214 3327
Kiwi the leading open source test case management system 3 2 36 10 26 28 330 125 3230
EvaP a university course evaluation system written in Python using Django 63 7 93 93 0 20 51 82 3199
Inboxen Main repo for Inboxen.org 3 5 53 23 30 24 143 11 3105
capstone CAP database scripts. 2 2 59 48 11 73 89 18 2978
dissemin Spot your own paywalled papers. Liberate them in one click. 2 5 36 18 18 32 142 18 2942
ej-server EJ uses gamification and machine learning to promote discussions and participation in a virtual democracy 33 1 11 9 2 28 33 16 2890
djangopackages Django Packages is a directory of reusable apps, sites, tools, and more for your Django projects. 20 8 69 55 14 15 400 119 2792
archweb Arch Linux website code 8 6 79 69 10 32 103 34 2728
TimeSide Scalable audio processing framework and server written in Python 15 7 28 0 28 18 260 42 2721
pydici CRM, billing and staffing management web tool for consulting company 16 9 118 100 18 40 61 27 2672
karrot-backend Django API server for the karrot frontend 3 4 24 3 21 37 83 72 2346
gcd-django Website of Grand Comics Database 41 6 267 263 4 147 54 17 2323
MetaCI Lightweight, Salesforce specific CI app run on Heroku to build Github repositories configured for CumulusCI 3 2 75 47 28 28 29 14 2224
cove CoVE is an web application to Convert, Validate and Explore data following certain open data standards - including 360Giving, Open Contracting Data Standard, IATI and the Beneficial Ownership Data Standard 11 4 7 7 0 0 32 10 2167
okuna-api 🤖 The Okuna Social Network API 2 1 147 7 140 56 120 28 2163
tsuru-dashboard Web dashboard for tsuru PaaS. 9 7 65 2 63 0 106 52 2032
janeway A journal management system designed for publishing scholarly articles. 5 2 305 299 6 100 80 23 1986
OnlineJudge open source online judge based on Vue, Django and Docker. 20 4 62 0 62 15 2608 740 1880
openstax-cms The OpenStax CMS, built using Wagtail on top of Django. 3 3 34 24 10 107 56 6 1691
patchwork Patchwork is a web-based patch tracking system designed to facilitate the contribution and management of contributions to an open-source project. 12 4 66 47 19 21 135 45 1608
foundation.mozilla.org Mozilla Foundation website 2 2 27 18 9 53 141 85 1590
tethys The Tethys Platform main Django website project repository. 4 5 47 47 0 33 48 31 1466
kamu You favorite book library 28 2 19 1 18 4 37 27 1448
djaodjin-saas Django application for software-as-service and subscription businesses 9 6 83 2 81 14 198 40 1430
site Source code for our website 6 1 13 0 13 14 556 36 1385
huxley Conference management system for Berkeley Model United Nations. 114 7 33 6 27 14 25 39 1380
EvalAI ☁️ 🚀 📊 📈 Evaluating state of the art in AI 8 2 63 63 0 20 791 380 1258
problem-builder An XBlock for posing questions to students 11 4 0 0 0 2 25 31 1221
promgen Promgen is a configuration file generator for Prometheus 1 3 57 0 57 17 525 90 1208
nsupdate.info Dynamic DNS service 156 5 32 1 31 7 593 80 1190
koku An open source solution for cost management of cloud and hybrid cloud environments. 2 1 40 12 28 55 47 19 1187
timestrap Time tracking you can host anywhere. Full export support in multiple formats and easily extensible. 60 2 8 0 8 6 1505 84 1182
cccatalog-api The Creative Commons Catalog API allows programmatic access to search for CC-licensed and public domain digital media. 2 1 17 4 13 16 38 40 1151
mitoc-trips The MIT Outing Club's trip management system 6 4 71 2 69 28 27 7 1125
healthchecks A Cron Monitoring Tool written in Python & Django 5 4 88 88 0 10 2190 297 1069
webterminal ssh rdp vnc telnet sftp bastion/jump web putty xshell terminal jumpserver audit realtime monitor rz/sz 堡垒机 云桌面 linux devops sftp websocket file management rz/sz 自动化运维 审计 录像 文件管理 sftp上传 实时监控 录像回放 网页版rz/sz上传下载 django 13 2 43 4 39 8 770 337 1063
django-arctic Django Arctic is a framework that simplifies the creation of custom content management systems. 19 3 28 1 27 6 65 20 1038
registration ✏️ Hackathon registration server 5 2 40 17 23 8 41 24 970
LogESP Open Source SIEM (Security Information and Event Management system). 41 1 93 17 76 37 49 15 962
patchman Patchman is a Linux Patch Status Monitoring System 43 6 43 28 15 18 70 30 871
vms Volunteer Management System 26 5 52 24 28 9 89 183 857
sopds Simple opds catalog 182 5 10 10 0 11 111 26 852
Wooey A Django app that creates automatic web UIs for Python scripts. 90 4 23 10 13 12 1320 140 851
SMART Smarter Manual Annotation for Resource-constrained collection of Training data 22 0 51 28 23 17 60 8 845
koalixcrm koalixcrm is an Open Source Python CRM and ERP based on django 105 8 8 8 0 3 349 162 832
sfm-ui Social Feed Manager user interface application. 69 4 44 2 42 13 107 23 821
doccano Open source text annotation tool for machine learning practitioner. 3 1 29 0 29 10 1818 394 806
omaha-server Google Omaha server (as known as Google Update) 131 7 38 1 37 19 141 65 791
Spirit Spirit is a modern Python based forum built on top of Django framework 22 5 91 84 7 16 937 271 723
pyfreebilling routing and rating VoIP application for service provider - AGPL v3 - Based on kamailio 105 6 115 19 96 73 50 27 703
python-opencivicdata python utilities for Open Civic Data 16 5 0 0 0 66 25 25 663
dpaste The Django project driving dpaste.de 30 8 7 2 5 1 250 89 653
securethenews An automated scanner and web dashboard for tracking TLS deployment across news organizations 3 3 15 12 3 10 72 23 652
www Dolphin Emulator official website source code (running on https://dolphin-emu.org/) 52 6 23 23 0 19 51 41 585
django-dynamic-scraper Creating Scrapy scrapers via the Django admin interface 239 7 0 0 0 12 912 283 537
vaas VaaS - Varnish as a Service 9 4 5 5 0 12 187 24 530
ahmia-site Ahmia.fi - Hidden service search engine 100 3 25 2 23 9 34 27 506
tarteel-api Backend and API for Tarteel.io 4 1 28 10 18 14 53 11 478
silverstrike Finance Management Made Easy 5 1 55 6 49 7 133 38 468
bakerydemo Next generation Wagtail demo, born in Reykjavik 8 2 1 1 0 19 287 170 464
fire Easily create GitHub issues via email 95 2 5 2 3 5 32 4 462
pinry The open-source core of Pinry, a tiling image board system for people who want to save, tag, and share images, videos and webpages in an easy to skim through format. 82 6 6 2 4 5 1415 236 450
django-cas-server A Django Central Authentication Service server implementing the CAS Protocol 3.0 Specification 224 3 9 0 9 17 64 21 442
omniport-backend The Django backend of the one true portal for any and every educational institute 15 1 12 0 12 41 43 7 406
fermentrack A replacement web interface for BrewPi 167 2 100 100 0 23 51 23 400
trunk-player Trunk Player - Python Django project to play back recorded radio transmissions used on site 51 2 37 24 13 23 34 21 378
openwisp-controller OpenWISP 2 controller module (built using Python and the Django web-framework) 47 2 8 1 7 15 235 45 366
pathagar Pathagar is a simple bookserver serving OPDS feeds 233 8 17 13 4 5 76 26 360
django-collaborative ProPublica's collaborative tip-gathering framework. Import and manage CSV, Google Sheets and Screendoor data with ease. 2 0 18 13 5 11 43 5 356
pokeapi The Pokémon API 11 4 49 0 49 198 1652 495 343
colossus Self-hosted email marketing solution 140 0 90 26 64 17 123 28 336
DCRM Darwin Cydia Repo (APT) Builder & Manager - v4 redesigned in Django. 67 2 37 16 21 11 118 53 331
Gerapy Distributed Crawler Management Framework Based on Scrapy, Scrapyd, Scrapyd-Client, Scrapyd-API, Django and Vue.js 14 2 40 40 0 5 1498 364 328
puput A Django blog app implemented in Wagtail 39 4 2 0 2 7 362 108 289
cms Django-based club management platform 3 0 0 0 0 26 102 12 282
hubblemon 107 3 5 5 0 0 46 23 261
API-Manager A Django project to manage the Open Bank Project API via API Calls 51 2 47 12 35 0 31 36 257
Propalyzer Web app that helps investors evaluate residential investment property opportunities 77 1 5 5 0 1 32 13 239
photonix This is a new web-based photo management application. Run it on your home server and it will let you find the right photo from your collection on any device. Smart filtering is made possible by object recognition, location awareness, color analysis and other ML algorithms. 45 2 1 1 0 9 256 26 223
gchatautorespond Automatic responses for Google Chat and Hangouts. 35 3 12 9 3 6 46 6 213
FFXIVBOT A QQ bot of FFXIV 26 1 15 15 0 30 116 49 188
vpn-at-home 1-click, self-hosted deployment of OpenVPN with DNS ad blocking sinkhole 33 1 11 0 11 9 1019 78 145
youtube-audio-dl A Django web application for converting YouTube videos to MP3 audio. 278 4 3 1 2 3 197 90 141
starthinker Framework for building data workflows provided by Google. 38 1 19 19 0 3 28 13 138
exist EXIST is a web application for aggregating and analyzing cyber threat intelligence. 87 0 45 10 35 12 64 10 136
meethub This is a Python/Django based event management system. A meetup clone. 132 1 22 4 18 5 382 27 126
scantron A distributed nmap / masscan scanning framework 84 0 18 1 17 6 175 40 124
ResumeParser A simple resume parser used for extracting information from resumes 3 0 5 4 1 5 73 42 94
pygmy An open-source, feature rich & extensible url-shortener + analytics written in Python 🍪 52 1 13 13 0 3 512 63 92
django-ipam django app for IP address management, WIP 193 0 17 0 17 4 74 17 89
the-zoo 🐒 A service registry for humans 19 0 27 9 18 22 33 4 83
grin-explorer Blockchain explorer for grin 142 1 5 0 5 4 48 28 79
Ghostwriter The SpecterOps project management and reporting engine 10 0 127 55 72 36 178 22 66
WebHashcat Hashcat web interface 237 2 34 34 0 7 76 19 63
Episodes Self Hosted TV show Episode tracker and recommender built using django, bootstrap4. 41 3 12 12 0 3 125 11 54
docker-box Web Interface to manage full blown docker containers and images. 116 2 33 33 0 5 86 29 33
banking-system A banking System Created Using Django Python Web Framework 55 2 7 7 0 6 28 20 23
django-channels-chat A simple Django-Channels web chat! 190 1 2 0 2 1 196 40 13
Shepherd A Django application to help red team operators manage a library of domain names 261 0 22 9 13 8 116 18 8
WebMap WebMap-Nmap Web Dashboard and Reporting 224 0 16 16 0 0 48 23 6

The raw data used can be found in this Google Sheet

Top comments (1)

Collapse
 
mash97 profile image
Mashiur Rahman

Cool experiment!