Course Platform
Learn to Build a Course Platform with Django, Cloudinary, HTMX, Tailwind, and more.
- Use Python 3.12 and Django 5
- Learn image upload basics with Django (plus the challenges with hosting images)
- Integrate Cloudinary Image & Hosting
- Optimize images sizes with a simple argument with thumbnails and large format
- Build an Email-first opt-in workflow
- Automatically resize videos to fit playback
- Custom email verification process from scratch
- Integrate TailwindCSS with django-tailwind
- Use HTMX to render and handle Forms
- Send Emails from Django with Gmail
- Customize the Django Admin to fully manage and view videos and courses
- Implement custom helper functions that can be re-used across Python projects
- Stylize the frontend using Flowbite
- Use the CloudinaryField on Django models to automatically handle images and videos
- and much more
References
- Sign up on Cloudinary here
- Send Email with Gmail & Django Blog Post
- Code
Lessons
Welcome
0:50
Demo
5:46
Python Virtual Environment
3:44
Create the Django Project
5:27
Roadmap for this Course
5:10
Baseline Django Course Model
13:25
Django ImageField and Pillow
2:48
Syncing Code with Migrations
10:41
Django Admin to Manage Course Model
4:27
Handling Image Uploads in Development
8:39
How Django Manages Image Uploads
4:49
Configure Cloudinary for Django
7:44
Using the CloudinaryField for Django Image Hosting
3:32
Customize the Django Admin to Render HTML Images
5:32
On Demand Image Adjustments with Cloudinary Images
4:30
Model Methods for Image Sizes
5:48
Understanding Foreign Keys with the Lesson Model
8:59
Lesson Publish Status and Preview
2:43
Cloudinary Video + Thumbnail Fields for Lessons
3:22
Foreign Key Stacked Model Admin
1:55
Ordering with a Model Field
6:32
CloudinaryField Upload Options
9:10
Generate a Public ID Field
11:13
Reusable CloudinaryField Functions
11:00
Decoupling Cloudinary Helper Services from Models
13:41
Get Cloudinary Video Object Service
4:25
Signed Private Video URL in Admin
2:26
Embed Cloudinary Video with Pure HTML
5:07
Using Django Templates to Render Video
8:16
Using JavaScript for Video Embed Basics
7:00
Django & the Cloudinary Video Player
6:20
Override Django Admin Templates
8:00
Render Multiple Videos in One Page
5:07
View Logic and Database Lookup Services
8:47
URL View Routing for Database Lookups
10:13
Public ID As URL Path Lookups
5:19
Rendering Templates from Views
10:16
Render the Course List View
9:26
Course Detail View and Template Snippets
6:28
Lesson QuerySet for Different Status Values
10:15
Lesson Detail View
5:30
Render the Video Player for Users
8:25
Configure Django to Send Email with Gmail
8:22
Email Verification Models
6:11
Create the Email Model Form
4:09
Handing HTML Forms with Django
5:50
Rendering a Django Model Form
5:58
Email Validation & Verification Event
6:25
Email Verification Event Service
4:59
Send Email from Verification Event
8:33
Unique Verify Link with UUID
4:39
Verfiy Confirmation Token Service
11:39
Enrich the Session With Verified Email ID
6:28
Email Required on Lesson Detail View
6:57
Using HTMX To Dynamically Load Forms
8:34
HTMX with POST Data
6:30
Using HTMX to Handle Logout
5:00
But Why Tailwind with Django
4:14
Install Django Tailwind
14:42
Setup Flowbite with Django Tailwind
7:27
Login & Logout Views
5:09
Tailwind in the HTMX-Driven Login Form
5:01
Improved Course List View
5:55
List View wit Thumbnail Images
9:51
Video Frame as Lesson Thumbnail
2:24
Global CSS Spacing
2:35
Course Detail View
6:22
Improved Unlock Content Page
1:29
Improved Homepage
5:47
Thank you
0:42
Next up
0:34