Have you completed the Django tutorial and wonder what’s next? Here are 5 topics worth diving into:
Making your application less ugly
The design of the application you build in the Django tutorial is quite… minimal.
If you have some design skills, you might want to create your own look. Learn more about Django templates, especially template inheritance, so you don’t have to copy and paste your code into all template files.
For non-designers, a solid alternative to hand-crafting HTML and CSS is the Bootstrap framework, which you can also use with Django easily.
One of Django’s strengths is the handling of user authentication. The polls application doesn’t know anything about users, only the built-in admin is restricted to staff users. Here are a couple of features you might want to implement:
- Allowing users to log in
- Allowing users to registers
- Allowing users to reset their passwords
- Require users to validate their email addresses
- Restrict access to certain pages to logged in users
- Restrict access to certain objects to certain users
Deploying your application
Django’s built-in development server, which you can start with
manage.py runserver, makes it incredibly easy to run your project on your local computer.
As easy as it is to get started locally, as daunting a task can it be to deploy your application. The Django documentation on deployment outlines some options, but it can’t answer all of the questions that arise:
Should I use Nginx or Apache? Should I use gunicorn or uwsgi? What provider should I use? Should I use to a dedicated server? Or should I use a cloud provider like AWS or Heroku? What about Docker? And why do my static files not work?
The easiest way to get your application online for free is probably Heroku. They have an extensive tutorial on deploying a Django app to Heroku you can follow.
Implementing a REST API
That means you have to implement a REST API in your backend that your frontend can talk to. You could roll your own solution for that, but I encourage you to check out Django REST framework.
Scaling your web application
The most upvoted Django-related questions on StackOverflow is “Does Django scale?”. This is a vague question, so the equally vague answer is “it depends.”
There are a bunch of measures you should consider to ensure your application scales.
- Using Django’s cache framework
- Delegating long-running tasks to a job queue like Celery
- Rate-limiting requests as a simple DoS protection
What’s next for you?
Web development is a wide topic and Django is a powerful framework. This list should give you some starting points what to learn next.
You can work on your own personal project or you can extend the polls application you built in the Django tutorial.
I’m currently writing a tutorial that does just that: it picks up where the Django tutorial ends. Subscribe to my mailing list in the box below to get notified when it gets published.