Learning Django and Python can be very fun. I personally love programming with Python and for the most part, work with the Django framework. But in the beginning some stuff can be confusing, especially if you are coming from a Java or C♯ background, like me.
The biggest challenges for me was to get familiar with the initial Django setup, understand the URL routing, and get to know how to organize the project files and apps. I’ve not being around for that long, it’s been only three years now since I started to mess around with Django.
Regarding those challenges, now I can say I’m really comfortable with the Django setup (you will eventually get there after creating a few projects), I fully understand how Django routes URLs but I’m always googling around to find a suitable regex for my needs, and finally, I’m always trying new ways to organize my Django projects.
In this post I will present you some of my open-source Django projects, which can help you to get started and learn more about how to get things done with Django. Of course they are not perfect, using the best practices nor anything. Some of them I developed while I was still learning the basics, but as they are quite small projects, they can be very useful in a sense that you can dive into the source code, without drown in a ocean of complexity.
Bootcamp
Bootcamp is a simple concept of a enterprise social network. I’ve developed it to encourage the developers of a company I worked in the past to collaborate and share experiences. It’s meant to be closed and to run inside a company.
The whole idea was to have a simple feed app in the front page, like Twitter so we could share links and post some of our thoughts and keep track of what everyone was doing. Also we wanted a space that all developers could share some more elaborate content, hence the Articles app. And finally, we wanted a Q&A app, like StackOverflow, for questions related to our business and the softwares and projects we developed for our customers — which couldn’t be shared openly.
A few things you can find within the Bootcamp project:
- Feed app (A Twitter-like microblog)
- Live feed updates
- Comments and likes
- Track comments and likes changes/updates
- Articles app (A collaborative blog)
- Question & Answers (A Stack Overflow-like platform)
- Notification center
- When someone likes and comments a feed post
- When someone comments on a article you wrote
- When someone answers your question, star or up-vote
- Messages
- Simple async messages
- Read/unread track
- Search app
- Quick and dirty search solution
You can grab the source code on GitHub and try the live demo on:
Source Code: github.com/vitorfs/bootcamp Live Demo: trybootcamp.vitorfs.com
Woid
Woid is a web crawler that collects top stories on some web sites I usually read. I developed it be my home page so I can keep track of what people are talking about at the moment, so I never miss a good story. I also archive them, so I can look back and see what was the most discussed topic on a specific date.
It’s a fairly simple Django project, but if you are curious about how to do some simple crawling, it might be useful.
- Clients
- Basic clients using the requests library and Beautiful Soup to parse the data
- Crawlers
- Getting the parsed data, calculating story score and saving the updates to the database
- Server script
- The script I run on the server to update the stories every 5 minutes (30 minutes for some of them)
You can grab the source code on GitHub and see the actual site on:
Source Code: github.com/vitorfs/woid Website: woid.io
Bloodhound
Bloodhound is also a simple web crawler that runs the whole day indexing and tracking price changes on a Finnish retail store named Verkkokauppa. The idea was to store all the price changes for every product in their website, so before I buy something, I could check if I’m paying the best price.
There isn’t much to see regarding to the Django part, it’s more about an interface to display the collected data.
- Core app
- Simple views and template to display the collected data
- Sniffer app
- Crawling frontier model and the crawler source code
- Server script
- Index product script
- Update prices script
You can grab the source code on GitHub:
Source Code: github.com/vitorfs/bloodhound
Parsifal
Parsifal is a tool I developed a couple of years ago, while doing my Masters Degree. If you are not familiar with some research practices, this app might not be really meaningful for you and what it does can be confusing. Anyway, it’s meant to help researchers do literature reviews.
There is still some old code there, but the app is pretty stable. It was one of my first Django projects and I still maintain actively, as I personally use on my daily activities and there is a good amount of users that also uses it. Even if the core of this app doesn’t make sense for you, there is still some simple apps you can use to learn more about Django.
- Auth
- Authentication
- Password reset
- Registration
- Blog
- Help articles
- User profile
- Extended user profile
- Uploading and croping profile pictures
- Follow users
You can grab the source code on GitHub and see the actual site on:
Source Code: github.com/vitorfs/parsifal Website: parsif.al
That’s it for now. I hope those projects can help you learning a little bit more about the Django framework. There’s a lot more to explore and to learn. If you are just starting, keep things simple. Do always the obvious solution first, even if it’s not the best solution. Get comfortable with the framework first. Get your hands dirty! That’s the only way to truly learn something.