Python Django Web Development
Build and deploy a real database-backed web application, from first model to production.
Django gives you an admin panel, authentication, an ORM and security defaults on day one. For a small team that is an enormous head start.
This course builds one real application across the whole course rather than a series of disconnected toy examples. You start with models and finish with the thing deployed, behind HTTPS, with tests.
It assumes you already know Python. If you do not, take the Python Complete Foundation course first — learning both together is how people end up confused about which is which.
Who this is for
- Developers comfortable with Python basics
- Anyone who wants a backend they can ship quickly
- Interns on the Full-Stack track
What you need first
- Python Complete Foundation, or equivalent Python experience
- Basic HTML (the Web UI Foundation course covers this)
- Comfort with the command line
Tools you will use
By the end you can
- Model data properly and understand what the ORM is doing
- Build views, templates and forms
- Use the Django admin as a real operational tool
- Implement authentication and permissions
- Expose a REST API with Django REST Framework
- Write tests for models and views
- Deploy a Django application with a production database and static files
7 modules, 32 lessons
Work through these in order. Each lesson is short enough to finish in one sitting and ends with something to build, not a quiz.
- 1
Getting Started
Project setup and understanding how a request flows through Django.
- Why Django, and when not to use itComing soon
- Starting a project the right wayComing soon
- How a request flows through DjangoComing soon
- Apps, settings and project structureComing soon
- 2
Models and the ORM
Your data layer. Get this right and everything downstream is easier.
- Defining models and fieldsComing soon
- Migrations, and how to not get stuckComing soon
- ForeignKey, ManyToMany and OneToOneComing soon
- QuerySets and filteringComing soon
- select_related, prefetch_related and the N+1 problemComing soon
- The Django admin as an operations toolComing soon
- 3
Views, Templates and Forms
Turning data into pages people can use.
- Function-based views and URLsComing soon
- Templates and template inheritanceComing soon
- Class-based views and when they helpComing soon
- Forms and ModelFormsComing soon
- Messages, redirects and the POST-redirect-GET patternComing soon
- Static files and user uploadsComing soon
- 4
Authentication and Permissions
Users, login, and controlling who can do what.
- The user model, and customising it earlyComing soon
- Login, logout and password resetComing soon
- Permissions and access controlComing soon
- Django’s security defaults and what you must not disableComing soon
- 5
Building an API
Exposing your data to a mobile app or frontend.
- Django REST Framework: serializers and viewsComing soon
- ViewSets, routers and paginationComing soon
- Token authentication for APIsComing soon
- Testing your APIComing soon
- 6
Testing and Quality
Confidence that a change did not break something else.
- Testing models and business logicComing soon
- Testing views and formsComing soon
- Fixtures and factoriesComing soon
- 7
Deployment
Getting it live, safely.
- Settings, environment variables and secretsComing soon
- Moving from SQLite to PostgreSQLComing soon
- Static files and media in productionComing soon
- Containerising a Django appComing soon
- Deploying, HTTPS and the launch checklistComing soon
Learning this with a mentor is faster
Our internship programme is free and fully remote. You get this curriculum, real project work, and code review from working developers.