
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Build a full stack SaaS with Django, HTMX, and Tailwind CSS to write articles and social posts. Include signup, GitHub login, a dashboard, and a markdown editor.
Discover the essential setup for this course, outlining compatible computers, optional Docker Desktop with Docker Compose advantages, and guided installation of Visual Studio Code.
Explore the course curriculum from fundamentals through advanced Django concepts, including HTML, CSS, Python, setup with pyenv and Poetry, Hello world, capstone projects, Docker, AllAuth, search, pagination, and Railway deployments.
Learn how to get help by using the course Q&A to ask detailed questions with code and errors, while doing self-research with Google or Stack Overflow and noting AI caveats.
Explore the head and body elements in HTML, including boilerplate, metadata, and linking CSS or JavaScript, with examples of visible body content like headings.
Explore how block elements take full width and stack, while inline elements use only space their content needs, with examples of div, p, h1, and inline em, strong, and b.
Learn to structure pages with headings h1 to h6, enforcing a single h1 and proper nesting, while using section elements and css for styling, accessibility, and seo.
Learn the paragraph element in HTML as a container for text and other elements, with accessible, concise usage that groups labels and inputs in forms and supports screen readers.
Master how HTML links work using the a element, href, and target, with rel no opener and no referrer, and explore internal anchors with id and download or mailto.
Learn how the image element uses src and alt to deliver accessible visuals, manage loading behavior, and prevent layout shifts by reserving space and using aspect ratios.
Explore ordered and unordered lists in HTML, using ol, ul, and li, with examples of numbering, bullets, and nested sublists. Learn customizing with CSS list-style-type, start, ids, and simple selectors.
learn when to use divs and spans as block and inline elements, apply classes for css styling, and group content with divs for two-column layouts using flex.
Learn how HTML forms collect data in the browser and send it to a Django app, using GET or POST, with action and inputs like name and password.
Explore how HTML forms render text, email, and password inputs, using labels, ids, names, and attributes like placeholder, value, and required, plus basic validation and submit options.
Explore checkboxes and radio buttons, learn how to name, id, and value them, and understand groups with the same name enforce single selection in forms.
Explore how HTML text areas enable multi-line input, with accessible labeling, customizable rows and cols, placeholders and default content, and learn practical user experience considerations for limits and resizing.
Master HTML select and option usage, map visible choices to form data, set defaults and disabled options, and decide between dropdowns and radio buttons for many options.
Learn how form submissions use action and method with labels, inputs, and submit buttons or inputs. Avoid obscure access keys; prefer JavaScript shortcuts for submit.
Enhance form accessibility by using fieldsets and legends for grouping, enabling proper autocomplete values, ensuring keyboard navigability, and providing clear, contextual error messages.
Explore semantic HTML by using the right element for the right content, from header, main, article, nav, to footer, and avoid common pitfalls.
Explore how to correctly use header and nav elements in HTML, structure introductory content and navigation, and enhance accessibility.
Master how to structure HTML with main, section, and article to mark the main content, group related content, and define independent, self-contained pieces used in blogs or recipes.
Use the aside for tangential content related to the main topic, typically as a sidebar. Place the footer where it belongs—within a section or the full page—to reflect context.
Learn how meta tags in the head of an HTML page control rendering, encoding, and SEO; focus on the viewport tag, UTF-8 charset, and social media descriptions.
Master how Open Graph and Twitter meta tags shape social previews with og:title, og:type, og:image, and og:url. Ensure accurate sharing by implementing these tags and testing previews on social networks.
Explore css syntax, selectors, and declarations, and learn to target elements with element, class, and id selectors, use inline, style tag, and external css, and apply Tailwind classes.
Explore how CSS units shape responsive typography and layout, from rem and root em to percentages, vw, and vh, and learn practical rules for scalable, accessible web design.
Explore the CSS box model by examining content width and height, padding, border, and margin, and learn how box sizing border-box changes element dimensions and spacing.
discover how border-box sizing changes width, padding, and borders relative to an element’s total size, and why Tailwind defaults to border-box with a CSS reset to avoid weird layouts.
Discover how css selector specificity decides which rule applies, using class, type, and id selectors. Learn how order, nesting, and Tailwind css utility classes influence final styles.
Master css positioning in the flow layout, learning static defaults and how fixed, sticky, relative, and absolute offsets interact with scrolling, containers, and the viewport.
Explore how to define colors in CSS using hex, rgb, rgba, and hsl, control text and background colors, and create a background image and linear gradients.
Explore css typography, including font-family inheritance from body to main, rem-based sizing, and how to adjust weight, style, line height, alignment, and link decoration for readability.
Learn how pseudo classes and pseudo elements modify elements through hover, focus, and active states, including links, inputs, and buttons, and how before and after add content.
Explore how flex box creates a one-dimensional layout with a main axis and a cross axis, lets elements grow or shrink, and uses justify content space between to distribute space.
Master CSS flexbox justification and alignment by exploring main and cross axes, and the full set of justify-content and align-items values such as center, space-between, space-around, space-evenly, stretch, and align-self.
Discover how flex item properties shape layout: use flex-basis for initial size, flex-shrink and flex-grow to control shrinking and growing, and how nth-child selectors influence behavior in responsive flex layouts.
Learn how CSS flex gaps create consistent column and row spacing, understand when to wrap items, and apply align-content flex-start to keep content organized on smaller screens.
Explore css grid fundamentals by defining columns and rows, using 1fr and auto sizing, fixed pixel widths, and layouts such as a sidebar beside main content.
Learn how grid template areas let you define page structure with named areas for header, sidebar, content, and footer, assign grid areas, and adapt layouts with gap and media queries.
Learn how CSS grid uses repeat to define columns and rows, including repeat(3, 100px) and repeat(auto-fit), and how minmax(100px, 1fr) lets columns fill space, with autofit versus autofill notes.
Explore css grid placement in a 4x4 grid by assigning items to specific origin rows and columns, using grid-column and grid-row with spans and end values, including negative indices.
Explore CSS grid justification and alignment, differentiate items from content, and apply justify and align properties—including self variants—for flexible grid layouts.
Master the Python refresher by identifying familiar topics, using quizzes to test knowledge, and skipping videos when confident; speed up playback and mark completed videos to earn the certificate.
Explore how variables work in Python, including assignment, right-hand side evaluation, and type concepts like integers, floats, and strings, with examples of print, string concatenation, and variable reassignment.
Master string formatting in Python, using f-strings (Python 3.6+), to embed variables and the format method to create reusable templates with placeholders.
Explore how to collect user input in Python using input and prompts, print results, and convert strings to numbers for calculations, with formatting via f-strings.
Explore lists, tuples, and sets in Python to store multiple values, access items with subscript notation in lists and tuples, and avoid duplicates in sets.
Master advanced Python set operations with difference, union, and intersection to derive local and abroad sets and find common elements.
Explore booleans in Python by using two equal signs, not equal, and greater or less than comparisons, and learn how the is keyword differs from == in identity checks.
Explore flow control in Python with if statements that use booleans to guide actions based on user input, including day_of_week comparisons, indentation rules, and using lower() to handle case variations.
Explore how the in keyword checks membership in lists, tuples, sets, and strings, using examples with friends and watched movies to show avoiding duplicates and substring checks.
Learn how to use the in keyword in Python if statements to test membership in collections, handle user input, and build a simple magic number game with conditional logic.
Master Python loops by learning while and for constructs, including break usage, loop termination, and using range, sum, and list iteration to compute averages and print results.
discover how Python list comprehensions create new lists on the fly, such as doubling numbers and filtering friends who start with s, and explore identity with is and id.
Master Python dictionaries by learning key-value pairing, accessing and updating entries, nesting lists and dictionaries, iterating with items, checking keys with in, and computing values like attendance averages.
Explore destructuring variables in Python, including unpacking tuples in assignments, handling lists of tuples in for loops, and using underscore to ignore values.
Learn how to define and call functions in python using def, create callable variables, and manage function scope, indentation, and shadowing with hands-on examples like hello and age in seconds.
Define functions with two parameters, pass arguments, understand positional vs keyword arguments, and improve readability by using keyword arguments in Python.
Define default parameter values in Python by placing defaults at the end, so non-default parameters remain required, and understand how missing arguments use defaults and keyword versus positional arguments.
Learn how return values work in Python by showing that functions return None by default. Use return statements to provide values to callers and end execution.
Explore anonymous lambda functions in Python that return values in a single line, and learn when to use map or list comprehensions and how to name a lambda.
Learn how dictionary comprehensions create a username to user information mapping in Python, enabling fast login checks by retrieving a user tuple from a username key.
Explore unpacking arguments with *args, collecting and iterating over dynamic inputs, de-structuring into x and y, and passing dictionaries as named arguments in Python.
Master unpacking keyword arguments in Python with **kwargs and *args, collecting into a dictionary and unpacking back into named arguments for flexible function calls.
Explore object oriented programming in Python, modeling real world objects with classes and methods, using init and self to create objects and compute a student's average.
Explore Python's magic methods __str__ and __repr__, learn how to customize object string representations for user readability and unambiguous reconstruction of objects.
Discover the differences between instance, class, and static methods in Python. See how cls enables factory-style object creation with class methods and how static methods stand alone.
Explore class inheritance in Python by creating a device base class and a printer subclass, reusing methods like __init__, __str__, and disconnect, with capacity and remaining pages tracked via super.
Explore class composition in Python by modeling a bookshelf that contains books, showing how composition simplifies design and favors has many relationships over inheritance.
Learn how to use type hinting in Python 3.5 to annotate functions and return types, with examples of lists, strings, integers, and importing from typing to catch mistakes.
Learn how Python imports work across files like code.py and mymodule.py, how __name__ and dunder main differ, and how sys.path influences import behavior.
Explore how relative imports behave in Python and why absolute imports are recommended. See folder structures like libs.mylib and libs.operations.operator and learn to avoid relative imports.
Explore how Python handles errors with try-except blocks, raise statements, and tracebacks. Learn to use else and finally to control flow and provide robust error handling in programs.
Create custom error classes in Python by inheriting from value error to raise a 'too many pages read' error when a book’s pages exceed the page count.
Discover how first-class functions treat functions as variables, enabling passing them as arguments and calling them as values in Python. Explore divide, name search, and lambda or item getter.
Discover how Python decorators modify functions to enforce access control, turning a plain get_admin_password into a secure, admin-only call through a simple decorator example.
Learn how the at syntax applies a decorator to a function in Python, using @make_secure to wrap get_admin_password, and how functools.wraps preserves the original function name and documentation.
Explore decorating functions with parameters using a flexible decorator that supports *args and **kwargs, passes arguments to the original function, and avoids coupling to any one function.
learn to create decorators with parameters using a decorator factory, controlling access for admin, user, and guest and applying the decorator with required arguments.
Explore mutability in Python by comparing lists and their ids, showing how assignments reference the same object, and contrast mutable types with immutable ones like tuples and strings.
Understand why mutable default parameters in Python cause shared state across instances and learn to fix it by using None defaults and internal assignment, with optional type hints.
Set up your local development environment for Django using the Mac and Windows videos, with Linux guidance mirroring Mac, and follow along to be ready to go.
Discover how to install pyenv on Windows, manage Python versions, set the default with pyenv global, install 3.12.1, and run commands via pyenv exec.
Install pyenv on Mac using homebrew, then manage and install Python versions with pyenv install and pyenv global. Use pyenv exec to run commands with the chosen Python version.
Install PipX to run Python libraries in isolated environments, then install Poetry with pipx. Use poetry to create a new django course project with pyproject.toml for dependencies.
Install pipx globally with brew and verify. Install poetry via pipx, then create a new poetry project named django course with its folder, tests, readme, and pyproject.toml.
Install Visual Studio Code on Windows from code.visualstudio.com/download, add it to the path, then install Python and Python Debugger extensions, open the Django course folder, and trust the authors.
Install visual studio code on mac from code.visualstudio.com for arm, drag to applications, then install the python extension and python debugger, and open django course folder with readme.md and pyproject.toml.
Create a poetry-managed virtual environment, configure VS Code to use it, and install Django with poetry add, producing pyproject.toml and a lock file to lock dependencies.
Set up a poetry-managed virtual environment for a Django project on macOS using Visual Studio Code. Install Django with precise versioning and generate a lock file to keep dependencies reproducible.
Create a Django project by running poetry run django admin startproject, django course; this generates manage.py and project folder with settings.py and urls.py, then run poetry run python manage.py runserver.
Learn to start a Django project on Mac by creating the project folder, using Poetry to run manage.py commands, and exploring settings, urls.py, and entry points with runserver at 127.0.0.1:8000.
Run migrations with manage.py to update the database, then create a superuser to access the admin panel. Start the server and log in at /admin to verify access.
Learn to migrate the database, create a superuser, and access the django admin panel on Mac by running manage.py migrate, manage.py createsuperuser, and manage.py runserver, then visit /admin.
Create a Django app on windows with poetry run and python manage.py startapp, exposing core files like dunderinit. py, admin. py, models. py, views. py, and the migrations folder.
Create a Django app using the startapp command, and learn about the app’s core files—__init__.py, admin.py, models.py, apps.py, tests.py, views.py, and migrations—and how they support the project.
Are you ready to level up your web development skills? Master modern full stack development using Django 5, TailwindCSS, and HTMX.
What You'll Learn
In this comprehensive, project-based Django course, you'll build a complete, production-ready web application from the ground up. We'll learn Django to create robust projects without having to re-invent the wheel! We cover:
Set up a Python environment and your Django projects
Understand Model-View-Controller, requests, and responses
Work extensively with Django templates
Add relationships between models (such as one-to-many or many-to-many)
Use the Django ORM to query and aggregate data from your database
Use and customize the powerful Django admin panel
Handle user input with Django forms
Generate forms automatically using Django models
Add extensive authentication and social sign-on, including email confirmation
Learn how to cache, compress, and serve static assets in production
Plus you'll also learn an entire ecosystem around Django:
TailwindCSS: Design sleek, responsive user interfaces
HTMX: Add dynamic features without complex JavaScript
PostgreSQL: Manage data with a production-grade database
Docker & Docker Compose: Containerize your web application for easy deployment
Authentication: Implement secure user systems with Django-allauth, including social sign on
Markdown Editor: Integrate rich text editing capabilities with your Django project
Deployment: Take your Django project live on Railway
By the end of this course, you'll have the skills to develop, design, and deploy full stack Django web applications using cutting-edge technologies.
Why Choose This Course?
Project-Based Learning: Build a real-world Django application from start to finish
Comprehensive Tech Stack: Go beyond basic Django with modern tools and practices
Clear, Concise Explanations with Hand-Written Subtitles: Suitable for non-native English speakers
Practical Skills: Learn techniques used in professional web development environments
Up-to-Date Content: Stay current with the latest web development trends
No more piecing together fragmented tutorials or outdated resources. This course provides a cohesive learning experience that will take you from foundational concepts to advanced techniques in Django full stack development.
Join us to level up your web development skills. Whether you're aiming to boost your career prospects or bring your web application ideas to life, this course will give you the tools and knowledge you need to succeed.
Enroll now and start your journey to becoming a proficient full stack Django developer.
See you in the course!