I’ve started developing my first website using Django: allconf.io. It’s a list of tech conferences and other industry events (I know, I know, perfect timing!)
It’s not intended to make money, just act as a testbed to work on Django in a “real world” project that forces to me deal with “real world” issues that I otherwise wouldn’t even think of when working on a site locally on my machine.
I’ve got the website up and running, but my main next step is to create separate development, staging and production environments for my Django app. These environments would also each point to their own static files and database.
Where do I start learning about setting this up? I can’t really find any tutorials.
The site’s setup is:
• Python 3.7 + Django 3.0
• Wrapped in a Docker Virtual Environment
• Production hosted on Heroku servers
• Static files hosted on Amazon S3
• PostgreSQL database
Any advice on resources that cover these questions would be amazingly helpful.
My post of one year ago still stands with pointers to lots of tutorials: https://adamj.eu/tech/2019/03/21/where-to-learn-django-in-2019/
But mostly it points to https://github.com/wsvincent/awesome-django
And then there are Will Vincent’s books which cover this: https://learndjango.com/
If you’re using Heroku, I’ve always found their documentation pretty good. I’d advise against using the docker mode until you’re used to the normal mode, and even then it comes with several downsides like slower build times, harder to inspect your virtualenv locally, hard to use local tools like flake8 and black.
Hi Adam, thanks very much for your response. I’ll definitely take a look at all those links in your blog post. I’ve finished all 3 of Will Vincent’s books (they’re super helpful!) and think I might get the Two Scoops of Django book next. I noticed your post (and others) have highly recommended that one.
You’re absolutely right, I feel like Docker has made things unnecessarily complicated as a first time project – especially as someone who is working alone and therefore has less need to make sure dev environments are repeatable across machines. I think I used it because at the time it seemed like an easier way of getting my Postgres database running locally, and pushing the whole site to Heroku for the first time.