Interactive roadmap

    Django roadmap

    Designed for Python programmers ready to build robust web applications. You will learn to create fully functioning websites, handle databases, and deploy your projects online.

    Your progress0% · 0 of 18 topics
    Done Learning Skipped OptionalClick any topic to learn more and mark your progress.
    1. 1

      Python Prerequisites

      0 of 3 done

      Brush up on the essential Python skills needed for Django development.

      Take your time with these core Python concepts, as a strong foundation makes learning Django much smoother.
    2. 2

      Projects and Apps

      0 of 3 done

      Learn how to structure a Django project and create modular apps.

      Keep your apps small and focused on a single feature to make your codebase much easier to manage.
    3. 3

      Models and the ORM

      0 of 3 done

      Manage your database using Django models and built-in tools.

      Design your database models carefully before writing code, as changing data structures later takes extra effort.
    4. 4

      Views and Templates

      0 of 3 done

      Handle user requests and display HTML pages dynamically.

      Keep your views focused on gathering data, leaving the visual presentation entirely to your HTML templates.
    5. 5

      Forms and Admin

      0 of 3 done

      Collect user input securely and manage your site contents.

      Always validate user input on the server side to keep your application secure against bad data.
    6. 6

      Auth and APIs

      0 of 3 done

      Secure your site and build web APIs for modern frontends.

      Test your authentication flows thoroughly to ensure users can only access what they are permitted to see.

    Learn it all, with a tutor that never sleeps

    Every topic links to LevelUp lessons, practice exercises and the 24/7 AI Tutor. Your progress updates as you master lessons.

    Every topic explained

    Step 1: Python Prerequisites

    Master variables, functions, and control flow to write clean code. This forms the foundation of all your Django projects.
    Read more

    Python is a clear, readable programming language that lets you write code quickly. Mastering basics like variables to store data, functions to reuse logic, and loops to handle repetitive tasks is essential. For example, you might write a function to calculate a total price including tax.

    In Django, you will use these exact programming patterns every day to process user requests and build your website logic. Knowing how to write clean, bug-free Python code means you can focus on learning framework features rather than fighting syntax errors.

    • Use variables to store information
    • Write functions to group reusable logic
    • Control program flow with loops and conditions
    • Keep your code tidy and readable
    Python Documentation
    Understand classes and objects. Django relies heavily on this programming style to structure its models and views.
    Read more

    Object oriented programming is a style of coding that organises software into blueprints called classes and individual instances called objects. Think of a class as a blueprint for a house, while the objects are the actual houses built from it. Each object holds its own data and specific actions it can perform.

    Django relies heavily on this approach. When you define database tables or view logic, you are writing and extending Python classes. Understanding inheritance and methods helps you work with Django structures naturally.

    • Classes act as blueprints for data
    • Objects are individual instances of classes
    • Methods are functions that belong to an object
    • Inheritance lets you share code between classes
    Isolate your project dependencies using venv. This keeps your project packages organised and prevents version conflicts.
    Read more

    A virtual environment is a self-contained folder that holds a specific version of Python and its installed packages. Think of it as a dedicated toolbox for a single project, keeping its tools separate from everything else on your computer.

    This matters because different projects often need different package versions. Using virtual environments prevents conflicts, ensuring your Django project runs reliably without breaking when you update other software on your system.

    • Isolates project packages from your system
    • Prevents version clashes between apps
    • Makes sharing projects much easier
    • Uses the venv module built into Python

    Step 2: Projects and Apps

    Set up Django on your machine and create your very first project using the command line.
    Read more

    Installing Django is your gateway to building full-stack web applications. Using your terminal and package manager, you download the framework into your active virtual environment and set up your initial project structure with a single command.

    This creates the core configuration files that glue your entire website together, handling settings like database connections and security keys. It is the official starting point for every new web application you build.

    • Install via pip inside your virtual environment
    • Use django-admin startproject to begin
    • Generates core configuration settings
    • Establishes your project root folder
    Split your project into reusable components called apps. This keeps your code modular and easy to maintain.
    Read more

    In Django, a project is divided into smaller, self-contained packages called apps. Instead of putting all your code in one place, you separate features like user blogs, shopping baskets, and user profiles into their own directories.

    This modular approach means you can easily reuse an app in a future project or hand different parts of a large system to different developers. It keeps your codebase organised as your website grows.

    • Divides big projects into smaller parts
    • Apps are designed to be reusable
    • Generated using the startapp command
    • Keeps related code grouped together
    (optional)
    Map web addresses to the right parts of your code using URL configuration files.
    Read more

    URL routing is the traffic controller of your website. When a user types an address into their browser or clicks a link, Django looks at your URL patterns to figure out which piece of Python code should handle the request.

    For example, visiting yourwebsite.com/about/ should direct the user to the about page view. Setting this up cleanly ensures your site has logical, easy-to-read web addresses.

    • Maps web addresses to Python views
    • Uses path functions to match patterns
    • Can include app-specific URL files
    • Keeps site navigation clean and logical

    Step 3: Models and the ORM

    Define your database tables as Python classes. Django turns your code into actual database tables automatically.
    Read more

    A Django model is a Python class that defines the structure of your data. Fields inside the class represent columns in a database table, such as text fields for titles or date fields for publication times. For instance, a BlogPost model might have a title, body, and creation date.

    This lets you design your database using familiar Python syntax rather than raw database commands, keeping your data logic consistent and easy to update.

    • Models represent database tables
    • Attributes define table columns
    • Supports various data types easily
    • Forms the backbone of your data layer
    Track changes to your models and apply them to your database safely using migration commands.
    Read more

    Migrations are how Django translates your Python model changes into actual database instructions. When you add a new model or edit an existing one, Django generates a migration file that records these modifications step by step.

    Running these migration files applies the updates safely to your database. This system allows you to track database changes over time and share them across different computers without losing data.

    • Tracks changes made to models
    • Generated using makemigrations
    • Applied to database using migrate
    • Prevents manual database editing errors
    Query your database using Python instead of SQL. This makes fetching and saving data straightforward.
    Read more

    The Object Relational Mapper is a powerful tool that lets you interact with your database using Python instead of writing SQL queries. You can fetch, filter, create, and delete records by calling Python methods on your models.

    For example, fetching all published articles is as simple as running Article.objects.filter(is_published=True). This makes your code database-agnostic and much faster to write.

    • Interact with databases using Python
    • Filter, update, and query easily
    • Removes need for complex SQL code
    • Built directly into Django models

    Step 4: Views and Templates

    Write Python functions that receive web requests and return responses or rendered pages.
    Read more

    A function-based view is a standard Python function that takes a web request as its input and returns a web response as its output. Inside this function, you can fetch data from the database, process user input, and decide what page to show.

    For example, a view might fetch the latest news articles and send them over to a template for display. They are straightforward to write and perfect for handling custom request logic.

    • Python functions handling web requests
    • Receives an HttpRequest object
    • Returns an HttpResponse or rendered page
    • Great for clear, custom logic
    Display dynamic data inside your web pages using Django template tags and variables.
    Read more

    HTML templates are web pages mixed with special Django template tags and variables. They allow you to display dynamic data sent from your views without writing complex Python inside your HTML markup.

    For example, you can loop through a list of products or display a logged-in user's name using simple double-curly-brace syntax. This separates your design from your application logic.

    • Renders HTML structure for users
    • Displays data using template variables
    • Loops and conditions built into tags
    • Supports template inheritance for layouts
    (optional)
    Use built-in Python classes to handle common web tasks like listing items or showing details with less code.
    Read more

    Class-based views provide a shortcut for common web tasks by wrapping standard logic into reusable Python classes. Instead of writing custom functions to list items, show details, or create records, you use Django's built-in generic views.

    This drastically cuts down on repetitive code. By inheriting from a built-in class and changing a few settings, you can spin up a fully working list page in just a few lines.

    • Reusable classes for common tasks
    • Reduces amount of boilerplate code
    • Built-in views for listing and details
    • Easily customizable through subclassing

    Step 5: Forms and Admin

    Create HTML forms in Python to collect and validate user input safely.
    Read more

    Django forms handle the creation of HTML form fields, data validation, and error rendering in Python. Instead of writing raw HTML forms, you define them in code so Django can check if submitted user inputs meet your criteria.

    For example, a contact form can automatically check if an email address is formatted correctly before letting the user submit. This saves you from writing manual validation checks.

    • Generates HTML form fields automatically
    • Validates user input safely
    • Handles error messages for users
    • Protects against common web attacks
    Generate forms directly from your database models to save user input straight to the database.
    Read more

    Model forms take the standard form concept a step further by connecting directly to your database models. Django automatically generates the appropriate form fields based on your model definition, saving you from duplicating your code.

    When a user submits a valid model form, you can save it straight to the database with a single line of code. It is the fastest way to build data entry pages.

    • Forms linked directly to models
    • Auto-generates fields from database setup
    • Saves records with minimal extra code
    • Keeps validation rules in sync
    Use Django's built-in administration dashboard to manage your users and database records instantly.
    Read more

    The Django admin panel is a ready-to-use dashboard built straight into the framework. It reads your models and automatically generates an interface where you can create, read, update, and delete database records.

    This gives you an instant back-office for managing users, content, and settings without writing a single line of custom dashboard code. It is a massive time-saver for developers.

    • Built-in management dashboard
    • Auto-generated from your models
    • Manage users and records instantly
    • Requires registering models to activate

    Step 6: Auth and APIs

    Add login, logout, and registration features so users can have secure accounts on your site.
    Read more

    User authentication covers logging users in, registering new accounts, and securing pages so only authorized people can see them. Django provides ready-made views, password hashing, and session management out of the box.

    This ensures user credentials are stored securely without you having to implement complex cryptography yourself. You can easily restrict views so members-only areas require a login.

    • Built-in login and logout handling
    • Secure password hashing by default
    • Manages active user sessions
    • Protect views with login decorators
    Build flexible web APIs to connect your Django backend with mobile apps or JavaScript frontends.
    Read more

    Django REST Framework is a powerful toolkit for building web APIs. Instead of rendering HTML pages for browsers, your application sends raw data, usually in JSON format, which can be consumed by mobile apps or JavaScript frontends.

    This turns your backend into a flexible service that can power multiple clients at once. It handles serializers to convert complex model data into easy-to-read JSON structures.

    • Builds flexible web APIs
    • Converts models to JSON via serializers
    • Handles API requests and responses
    • Powers mobile apps and frontends
    (optional)
    Prepare your Django application for production and launch it live on a web server.
    Read more

    Project deployment is the process of moving your Django app from your local computer to a live web server accessible on the internet. This involves configuring settings like turning off debug mode, setting up allowed hosts, and serving static files correctly.

    Preparing your app for production ensures it remains secure, fast, and capable of handling real-world traffic from users around the world.

    • Moves app from local to live server
    • Turn off debug mode for security
    • Configure production database settings
    • Serve static files efficiently

    Related roadmaps