TLDR: The hardest part of building web applications is rarely using the framework itself or even the “business logic”. It’s cleanly integrating your app into all of the other tools involved in a modern web app. So we’re writing a book specifically about building and deploying a production-ready Django API that you can be proud of.
I remember feeling stupid while I was first learning about web programming. I picked Django because I liked Python, and while there were great resources online, it never felt like I knew quite enough to put a project I was proud of onto Github or Hacker News.
Most documentation and tutorials only covered building something that you could run safely on your own computer, or they were way too technical for me. Every time I tried to integrate with a new tool or service there were new headaches and problems that slowed my progress. It took years for me to feel confident showing off the apps I built.
I didn’t want to build toy applications. I wanted to build production apps that were safe and scalable enough to release onto the open web.
When my co-author Bryan and I started planning Fullstack Django APIs, we asked what problems existed within the Django ecosystem in general, and Django Rest Framework in particular. We could write a huge reference book on Django, but that seemed like a waste of time. Django already has expansive, mature documentation online. Books like Two Scoops of Django and Test Driven Development with Django are gold standards in their respective domains. We wanted to create something that complemented the existing materials, rather than trying to compete with it.
So we outlined areas of confusion. They included:
- How do I deploy a live production application?
- Where do I put my business logic?
- How do I store configs and credentials in a secure manner?
- How do I handle authentication?
- What type of DB should I use and how do I connect to it on my own computer vs a live, production database.
- How do all of the pieces of Django fit together?
- What are task queues and when should I use them?
- To cache or not to cache?
It eventually became clear that those areas of confusion weren’t unique to just us. Lots of new Djangonauts get excited about the possibility of making and deploying cool projects, but are bogged down by the difficulty of integrating their APIs into a broader development environment.
So that’s who we’re writing a book to help. Our goal is for junior and intermediate level developers to work through Fullstack Django APIs and leave with the confidence and skills needed to make a production-ready API. Something that they can show to recruiters or clients, and feel comfortable using to build live web services that store data from real users.
If we’re successful, this is something that every tech company using Django will give to new hires so they’re ready to write production code. We know that’s an ambitious goal, but we’re excited about the progress that we’ve already made in this area. I’ll get more specific with the details as we near the release date, but until then, I’m excited to share more about the process here on Dev.to.
If you’re interested in the project and would like access to the first chapter once it’s released, you can sign up here to stay in the loop.
Top comments (5)
I found that learning the vocabulary before diving is far more important than anything.
Cuz what makes Django unique is its rich vocabulary.
What to use and when to use it is what matters.
Those who don't know the vocab will always use the wrong tools.
I like the idea of this. I've known about and briefly used Django since 2007, but I really ramped up use in 2017 building a bunch of MVPs (that apparently are still in use) for startups.
The majority of my challenges with it were in managing authorization (in DRF) and initially breaking away from Jinja and using a frontend framework instead. The documentation was generally easy to follow, but I did get a habit of going through the source code, because it quickly turned out documentation was terse. If I remember correctly, that was primarily when I was trying to handle auth and trying to understand the ORM. I think I also had to learn how to create Django commands from example, but that's something that surprisingly was very helpful.
It's something I look closely for its development. I started an internship a month ago and I'm on the Python team, working on a Django app. I kind of learned on the fly many of the things you guys are projecting to explain on your book, but I totally see this as a book to read for any new comer into the team.
What other areas of confusion have you all found when learning about Django APIs? I'd love to know so we can add explainers for those areas!
I think it's more of working with front-end framework and deployment that is lacking.
The use of a task queue is important as well.