
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Azam Makki introduces Django five to beginners, teaching how to set up the development environment, build a Django project with html and bootstrap, create a blogs feature, and deploy.
Explore building a complete Django 5 web app from scratch using bootstrap 5, covering models, templates, admin, blog, contact forms, emails via Gmail, and deployment to PythonAnywhere.
Choose and set up a text editor for the Django 5 course using Visual Studio Code, install the Python, Django, and SQLite extensions, and explore a SQLite browser.
Django Documentation:
What Python version can I use with Django?
Django version 3.2 | Python = 3.6, 3.7, 3.8, 3.9, 3.10 (added in 3.2.9)
Django version 4.0 | Python = 3.8, 3.9, 3.10
Django version 4.1 | Python = 3.8, 3.9, 3.10, 3.11 (added in 4.1.3)
Django version 4.2 | Python = 3.8, 3.9, 3.10, 3.11, 3.12 (added in 4.2.8)
Django version 5.0 | Python = 3.10, 3.11, 3.12
Explore Python virtual environments to isolate project dependencies, manage multiple Django versions, and use virtualenv with a requirements.txt workflow for smooth development and deployment.
Create and manage a virtual environment for a Django 5 project by setting up a dedicated folder, installing Python 3.12, activating the environment, and understanding platform differences.
Install Django 5 and initialize a Django project named company in an activated virtual environment. Review the generated files (init.py, asgi.py, wsgi.py, settings.py, urls.py, manage.py) and run the local server.
Apply the 18 unapplied Django migrations with python manage.py migrate to create authentication, admin site, and session tables in SQLite, then compare the database before and after migration.
Create and register a Django app within your project, learn the app structure (models, views, templates, admin, migrations), and activate it by updating installed apps in settings.
Django MVT
Model (M): The Model is responsible for handling data-related logic. It represents the data structure of your Database
View (V): The View is responsible for handling user interface logic and processing user inputs.
Template (T): The Template is responsible for presentation logic. It defines how the data from the models should be displayed to the user.
Learn how to serve HTML files in Django by placing templates in the app templates folder or in a global templates directory, and render them with the render function.
Create a static folder for css and js, configure STATICFILES_DIRS in settings, move styles to custom.css, import it with Django's static tag in index.html, then restart the server.
Explore the Django admin site, a powerful admin UI for managing app data, and learn to create a superuser with python manage.py createsuperuser and register models to the admin.
Explore how the Django template language uses context data to render dynamic HTML with variables, dot notation, and filters like date, float format, truncate characters, and default.
Learn to use the Django template for loop tag to render lists in HTML, duplicating elements for each item and accessing item fields with dot notation, including loop counters.
Explore how Django templates use the if condition to show or hide HTML elements based on context variables, and combine it with for loops and inline CSS class logic.
Explore Django template inheritance to reuse header and footer across pages using a shared main.html, and understand blocks, extends, and URL tags for navigation.
Reuse HTML elements in Django templates by creating header and footer partials and including them with the include tag, streamlining the main HTML and supporting a bootstrap-themed site.
Bootstrap is a CSS front-end framework by Twitter offering HTML, CSS, and JavaScript components for responsive, good-looking web apps, with CDN or local options and getbootstrap.com version five guidance.
Learn to integrate a bootstrap theme into a Django project by wiring the index.html and assets folder through Django templates and the load static tag, enabling proper static file handling.
Apply django template inheritance to organize a bootstrap theme by creating main.html as the parent and index.html as the child, and extract header and footer as reusable components.
Explore how Django models use Python classes to create tables, store and query data, starting with the general info model for company details and migrations.
Register and manage your general info model in the Django admin site, customizing list displays and permissions, and learn to tailor the admin interface using admin.py, __str__, and field controls.
Explore how Django's orm lets you interact with the database using Python objects that translate to SQL; perform read, create, update, delete, and filter with q objects for or logic.
Query the general info model with the Django orm, retrieve a single record, and pass its phone, email, and company name to the view context for rendering in html.
Create a Django service model with icon, title, and description fields; migrate the database, register the model in admin, and enable listing and searching by title and description.
Query the service model, pass to context, and render icons, titles, and descriptions in a Django template loop using Bootstrap icons.
Create a Django testimonials model with user image, username, job title, rating, and review; register it to the admin site and display stars using a 1–5 choice, with migrations.
Fetch all testimonials from the database in the Django view and render them in a Swiper HTML section with user image, username, job title, and a rating stars loop.
Learn to display images in Django by using static file paths or hosted image URLs, and implement a conditional to select the correct source for each testimonial.
Create a faq section in Django by modeling questions and answers, migrating the database, and rendering them in a template loop with forloop.counter for running number in an accordion UI.
Build a Django contact form by creating a view, linking it to a URL and the HTML form with CSRF protection, then test sending messages.
Use Django's redirect shortcut to return the user to index after submitting the contact form, replacing a none return, and show a message that the email had been sent successfully.
Differentiate get and post requests, show how view functions are triggered by URL or HTML form submission, check request.method, and redirect to the home page.
Extract form data in a Django view by reading request.post into four variables: name, email, subject, and message, and see how required fields and bootstrap validation gate backend requests.
Configure Django to send emails with Gmail by creating an app password, updating settings.py, and using send_mail from django.core.mail in the contact view, handling SSL issues.
Hide Django app password by storing it in the virtual environment and reading it via OS module, then share the project safely using a requirements.txt instead of environment folder.
Design and send styled HTML emails in Django using an HTML template with inline CSS, render to string, and context variables to produce rich formatting.
Apply a try-except around Django's send mail flow, use the messages framework to display success or error messages on the page, with message tags differentiating error and success.
Apply Bootstrap alerts to Django messages to display success and danger notifications, replace h1 with alert components, and implement a sticky alert CSS for persistent notifications.
Implement a Django-based logging system by creating a contact form log model to record name, email, subject, message, action_time, is_success, is_error, and error_message in the admin.
Implement logging of contact form submissions in Django by creating a log record with name, email, subject, message, and a UTC timestamp, handling success and errors.
Build the block model and recent block section, plus a single blog page and a blocks list with six per page, with routing and a rich text editor in Django.
Create a Django block model with image, category, title, author, created date, and content; migrate, register in admin, and run the server.
Create an author model in Django 5 to store first name, last name, country, and join date, and link it to the block model via a foreign key, then migrate.
Explore how foreign keys create one-to-many relationships between author and block models in django, linking author id to block records and enabling multiple blocks per author.
Link the block and author models with a foreign key to establish a one-to-many relationship, and configure on delete behaviors to protect related blocks. Demonstrate admin drop-downs and migrations.
Build a Django ORM query in the index function to fetch the three most recent blocks by creation date, ordered descending and sliced to three for the home page.
Implement the recent posts section on the index page by looping through recent blocks, showing category, title, author, and formatted date, with image handling for local and remote sources.
Create a Django block detail page by wiring a dynamic URL with the block id, querying the database, and rendering the block title and content in the detail view.
Converts the block detail page to a bootstrap template, displaying image, title, author, date, and content, while wiring data from the database via context and URL tags.
Move the hero section to a separate hero.html, load static, and conditionally display the header and hero on pages whose URL does not include the keyword block.
Learn to implement a recent posts sidebar on the Django block detail page by querying two latest blocks, displaying image, title, and creation date, and linking to each block detail.
Build a Django blocks page that lists all blocks with pagination (six per page), using the blocks URL and a view that queries all blocks and renders them in blocks.html.
Build the blocks page frontend by adapting the Bootstrap template, looping through all blocks with Django, and displaying dynamic data like image, category, title, author, and date.
Implement dynamic blocks pagination in Django using the Paginator to display blocks per page and switch between pages via a URL page parameter read with request.get.
Learn to implement dynamic blog pagination in Django using Paginator, with previous and next controls, a current page indicator, and configurable blocks per page.
build a rich text editor for blog content using Django CKEditor, replacing the plain text field with a rich text field, configuring settings, running migrations, and rendering HTML in templates.
Learn to prepare a Django app for cloud deployment by fixing empty database queries with getattribute defaults, apply migrations, and set up a superuser to populate general info without crashes.
Prepare Django to serve static files on deployment by configuring the static route, running collect static, and adding White Noise middleware to settings.py for production css, javascript, and images.
Learn to push a django project to GitHub by creating a repo, initializing git locally, adding files, and pushing to the remote after creating a requirements.txt and gitignore.
Hi! and Welcome to the new 2026 Project based Django-5 Course "Django 5 - Build a Complete Website from Scratch to Deploy"!
where you will learn all Django Fundamentals, Integrating Django with Frontend and Bootstrap Templates to build stylish websites, CRUD operations and much more!
The course is absolute beginner friendly you don't need to have any prior knowledge of Django.
As we going to build Django Project from scratch, Going up the ladder step-by-step and covering line by line all the code and logic explained in detail.
From Scratch until Deployment of website on the internet, building a great looking Agency website with Blogging section and Admin site control, Webpage is mobile responsive using latest version of Bootstrap version 5.
The great about the course, it covers all sections required to get you from being beginner to the next level! with all the content using latest versions and course build on year 2026.
The basic knowledge of Python and html/css is all that is required to get started with this course.
Mentioning some of the ares will be covered from absolute first step:
VS Code Configuration
Django/Python version & Installation
Working with Virtual Env
Django & third party packages
Working with Static files locally and on deployment stage
Building Frontend from basic HTML to using advanced Bootstrap-5 Template
Using Django HTML Template to control the Frontend and display data
Using Django Admin Site and Customising it
Working with Django ORM (CRUD operations)
Django Migrations and Monitoring the changes on the Database
Build advanced Blogging section with Rich Text Editor
Using GMAIL service to send out emails
Deploying the website to the internet
Working with Git & Github
and much much more!
Additionally we are going to deploy our website on the internet in a step by step easy to follow appoarch!
So let's begin the journey of becoming an expert in Django.
Sincerely, Azzam Makki