
Embark on getting started with ecommerce by learning the fundamentals and how to set up your system, while embracing debugging, questions, and peer support.
Master the core web development stack for the Python ecommerce project by learning Python, Django, e-mail, access, and Bootstrap, with recommended projects to reinforce fundamentals.
Contribute to open source by learning and sharing about Python, Django, and licenses; explore GitHub repositories, study open licenses, and leverage code to build your own projects.
Use GitHub to access the latest e-commerce code, compare commits, and reference the product component and detailed view to troubleshoot and stay aligned with course lessons.
Preview the current live python ecommerce project, seeing a secure checkout and credit card processing. Discover where the course will take the build and highlight under-the-hood features.
Discover the two main help channels for this course—video comments and the Joynes platform—plus using GitHub for code reference and issue reporting to reinforce learning by answering others' questions.
See how Django, written in Python, makes it easy and fast to create web applications, distinguishing websites from web apps. Explore built in features that speed development and future-ready projects.
Create a fresh Python virtual environment for a Django ecommerce project, compare Linux and Windows commands, activate the env, and verify isolation with pip freeze.
Install a specific Django version in a virtual environment, create a new Django project, and launch the development server to view your first hello world page on localhost.
Learn to render html with Django by creating a simple home page view that returns hello world and basic html in the browser.
Render templates with Django by wiring views and URL patterns, then pass a Python dictionary as template context to set page titles for home, about, and contact pages.
Learn to build an interactive contact form in a Django web app by rendering HTML with a form, handling POST requests, and applying CSRF protection to secure data submission.
Learn to build and render Django forms with char fields, email fields, and text areas. Enhance form handling with widgets, placeholders, validation, and cleaned data in views.
Design and implement a Django login workflow by building a login form, view, and template, validate user input with authenticate, and manage sessions with redirect.
Build a Django register and login flow to restrict premium content to authenticated users, and validate registration with password confirmation and unique username and email.
Learn to test local static and media files in Django using a separate static CDN, including collectstatic, static root, and template tags for CSS and images.
Learn how to store and display products, upload images, and handle database interactions in the Django ecommerce app, covering how to get data from and save data to the database.
Learn how Django apps act as components of a web project, create a products app, and connect to the database, while understanding installed apps and basic app structure.
Learn about CRUD—create, retrieve, update, delete—and how these database actions power web apps, from admin views and lists to search, update, and delete operations.
Learn to use the Django admin to register the product model and perform create, read, update, and delete operations on products, including saving migrations and understanding admin versus user-facing interfaces.
Explore Django list view basics by comparing class-based and function-based approaches, wiring up models, templates, and urls, and examining context data and object lists.
Build a product detail view that renders full information for a selected item from the product list. Wire URLs, use the primary key with get_object_or_404, and render a detail.html template.
Learn to add image and file fields to Django models, configure media upload paths, run migrations, and validate and render uploaded media using the Python image library.
Learn to perform database lookups in Django by using the Python shell, filter querysets with icontains and multiple fields, and handle get_object_or_404 for missing objects with proper error handling.
Explore how to use and customize Django model managers, including the objects manager, to simplify product lookups with querysets and add a get by id method.
Add a boolean featured field to products, build featured list and detail views, and implement a custom query set and custom manager to filter by featured.
Centralize product urls in Django by moving to a single include, then use get_absolute_url with slug for reliable navigation from product list to detail pages.
Using Django templates to create valid, reusable HTML, this lecture shows how templates reduce repetition in views like the home and contact pages and improve overall web page quality.
Discover dry Django templates by building a base.html, extending with blocks, and sharing layout while moving CSS and JavaScript into reusable templates.
Learn how to use the include tag and template inheritance in Django, extending base templates, overriding blocks, and composing pages with reusable components like a nav bar.
Learn how to pass context and dictionary variables with include in Django templates, reuse the base nav bar, and customize the brand name across views.
Create a reusable list view by implementing a Bootstrap card component as a snippet and using include tags to render it, enabling uniform, updateable product cards across views.
Implement reverse URL resolution for product details by naming the URL detail and using slug as the keyword arg in get_absolute_url. Utilize namespaces to robustly resolve reverse calls.
Update the navbar with bootstrap, make the brand name conditional, and wire up named URLs (home, products, contact, login, register) with active state using request context and user authentication.
Apply Jianguo template filter tags to truncate long descriptions on list views and render line breaks on detail views, while leveraging title, timestamp, and date filters for formatting and timelines.
Explore building a Python Django ecommerce web app with bootstrap, focusing on responsive, mobile-first layouts and cross-browser compatibility, and learn to navigate bootstrap structure and documentation.
Install Bootstrap into the Django e-commerce project using the Bootstrap starter template from getbootstrap, place it in templates/bootstrap/example.html, render it with a template view, and verify the page loads.
Explore the difference between bootstrap's container and container-fluid, showing how container-fluid yields full-width layouts across browser sizes while container adds side padding and suits ecommerce sections.
Explore Bootstrap’s 12-column grid by building a container, row, and columns; learn how 12 columns across create responsive layouts that wrap to new rows.
Explore how column sizing with a 12-column grid defines widths across mobile and desktop, using containers, rows, and columns to build navigation, sidebars, content area, and footers.
Explore how offsets and ordering control layout by using margin auto left or right. Learn to adapt layouts with breakpoints and the order property to reverse item placement.
Learn how breakpoints in bootstrap drive responsive design by resizing a search bar across mobile to desktop, using a 12-column grid, auto margins, and nested rows.
Use Bootstrap spacing utilities to control margins and padding with classes like p, py, px, mb, and mx-auto for clean, centered layouts.
Prepare for integration by solidifying the Bootstrap layout for the Django eCommerce project, focusing on the navbar and structure, with the next video integrating the design into the main app.
Integrate bootstrap into the Django project by updating the base template, nav bar, and containers, then align authentication and product templates using block content.
explore how web apps enable user searches against the database, from simple queries like hat to complex ones like red hat.
Build a reusable Django search view that handles the query input and results, wiring a dedicated search app and filtering the product list via a q parameter.
Explore displaying the user’s search query in a Django eCommerce app by building a search view and template, and passing a query variable from the view to the template.
Create a reusable search form as a Bootstrap input group, loaded from a shared snippet, wired to the Django search namespace with method get and input name q.
Enhance django search with q lookups across title and description, apply distinct results, and move logic into a custom model manager for robust, reusable queries.
Build a Django tag component with a tag model, slug field, and product relationship, including a unique slug generator, admin integration, and many-to-many lookups for products and tags.
Explore how foreign keys and many-to-many relations connect products and tags in Django, using the manage.py shell to fetch related objects, reverse lookups, and tag filtering.
Build a Django e-commerce shopping cart, filling the cart and totaling items to prepare for checkout, while exploring Django-specific cart concepts.
Create a new Cartes cart component in the Django eCommerce project, enabling carts for both authenticated and guest users, with a cart_home view, templates, and session-based cart concepts.
Learn how Django sessions persist cart data for guest and authenticated users by storing data in the database, using session keys, and setting expirations.
Build a Django cart model with user and product foreign keys, a decimal total, and timestamps, using session-based cart creation for both logged in and anonymous users.
Create and manage the cart in the view by using the session to store a cart ID, validating it as an integer, and creating or retrieving the cart as needed.
Move cart creation into a Django model manager with a new_cart method that creates a cart from a user. Use request.user for authenticated sessions and ensure the cart saves.
Leverage Django signals, including m2m_changed, to automatically recalculate a cart total and subtotal when products are added or removed, updating admin and view workflows.
Implement a Django cart update view to add or remove products from the cart, manage many-to-many relations, and redirect to the cart or product detail.
Add to cart form updates the cart through a post endpoint, passing the product id, and redirects to the cart, while handling missing products and CSRF protection.
Display the cart contents in a Bootstrap table, render items with name and price, show subtotal and total, and add remove-item functionality.
Remove items from the cart by updating the cart view and rendering logic, using an in_cart flag to control display and ensure totals update in a Django eCommerce app.
Add a cart navigation in the navbar with a Font Awesome shopping cart icon, display real-time cart totals and item counts via session data, and link to the cart page.
Explore running a checkout flow in a Django ecommerce app without real payments. Understand why we defer payment processing to third-party providers and refine the checkout logic.
Outline the checkout roadmap by supporting login or guest checkout, building a billing profile, generating a payment token with Stripe or Braintree, and linking orders and shipping.
Define the Django order model with billing and shipping addresses, a cart foreign key, and status choices, then configure the order id and totals, then enable admin integration and migrations.
Generate a unique, random 10-character lowercase order id including digits, then move the utility to the main e-commerce utils and attach a pre save signal on the order model.
Use a post save receiver to update the order total from the cart total, including shipping, when the cart changes or a new order is created, avoiding circular imports.
Implement the cart-based checkout view by creating or retrieving an order from the cart, integrating shipping and order totals, and wiring the checkout flow in Django.
Upgrade Django authentication by moving login and registration to a dedicated accounts app, implement safe redirects for checkout, and enable login logout flows that return users to their checkout page.
Create a Django billing profile model linked to a guest email or authenticated user, enforce one profile per user, and auto-create on user signup using get-or-create logic.
Implement billing profiles in the checkout view for both logged-in and guest users by creating or retrieving a billing profile tied to the user or session.
Associate the billing profile to the order and update creation based on the cart and billing profile. Remove the guest email id from session to avoid confusion.
Implement a new or get order manager to deactivate old orders with the same cart and return a single active order, streamlining the Django eCommerce workflow.
Create a billing profile manager to abstract billing profile creation from request data, handling guest and authenticated users via get or create and reusing the logic across cart and checkout.
Create a Django addresses app to store billing profile addresses with fields and a type (billing or shipping), integrate admin and migrations, and use a model form for checkout.
Build a reusable address form in a Django eCommerce checkout, using a dedicated addresses template, model forms, and views to handle shipping and billing addresses.
Associate shipping and billing addresses to orders by configuring foreign keys with a related name and migrating the database. Update orders by saving address IDs from the session during checkout.
Finalize checkout by ensuring the order is done, update the order to paid, delete the cart, and redirect to a success page, with billing profile and address checks.
Learn how to reuse saved shipping and billing addresses at checkout by rendering address lists, selecting via radio inputs, and wiring a reuse view in Django.
Build a checkout flow in a django eCommerce app by displaying cart items, shipping and billing addresses, and a final checkout success page with order completion.
Learn the basics of GAO query (jquery) for an e-commerce project, set up a Python 3 development server, integrate bootstrap, load jquery from CDN, and test with document.ready and alert.
Learn how to use jquery selectors to run code when the document is ready, trigger alerts, and change the body background color to red, with set timeout to delay actions.
Explore selectors to target h1 elements, changing color and text. Use id selectors like #header-3 and class selectors like .header to apply background color and padding.
Learn to make long text blocks scrollable by creating a reusable description class, setting height and width, and applying overflow scroll in a JavaScript/jQuery workflow.
Explore data types, arrays, and conditionals in JavaScript using the each loop to iterate, test modulo for even numbers, and chain if, else if, and boolean logic.
Master handling form data with jQuery by creating a form, using bootstrap styling, serializing content, and preparing for AJAX calls to a Django eCommerce back end.
Explore how modern web apps update content without full page reloads by pressing a button, and implement these dynamic features in your Django eCommerce project using Jaquie.
Learn the difference between synchronous and asynchronous loading and how to update the cart and other interactions without page reloads to boost usability in a Django ecommerce app.
Transform the add to cart button into an ajax, asynchronous form submission using jQuery; extract action, method, and serialized data to post to the endpoint without reloading the page.
Explore handling ajax in Django with json response by returning json data for cart updates, enabling asynchronous updates without full page redirects, while preserving a non-js fallback.
Update the cart item count in the navigation bar when adding to cart, expose the count in JSON with camel case, and refresh on success.
Learn to refresh the cart via Ajax by calling a dedicated refresh cart endpoint, enabling remove actions, and ensuring cart refresh works when JavaScript is disabled.
Update the cart user interface by iterating over products, prepending new rows to the cart table, and handling add-to-cart and remove actions to reflect changes in real time.
Build a responsive Django ecommerce cart with ajax updates, linking items, removing products, and dynamic cart handling to reflect real-time changes.
Implement an auto search that triggers after users stop typing, using a typing timer, search form input, and a perform search function, with a loading spinner during the search.
Display errors with jQuery Confirm during ajax cart updates, simulating 400/500 responses and presenting a uniform, user-friendly alert with backend messages.
Convert the contact form to Ajax by posting to a dedicated endpoint, serialize the form data, and handle success and errors with JSON responses for clear feedback.
Learn how to ajaxify a contact form by parsing the response json, surfacing validation messages like email and content errors, and reusing a display submitting pattern with a loader button.
Convert any form to use Jaquie by moving JavaScript to a dedicated static file, prepare Ajax integration, and reinforce Django security against cross site forgery in a robust eCommerce app.
Implement csrf token handling for ajax in Django following the recommended approach, including a csrf-safe ajax setup function for jQuery. Wire static files or a CDN to keep ajax secure.
What used to take a big team of people can now be accomplished by you and you alone. It's all thanks to the massive improvements to what programming languages can do. Python is the perfect beginner's starting point because it's simple to understand while being powerful enough for experts to build self-driving cars and AI systems.
This course leverages Python to build a fully functioning eCommerce website and application using the Django framework.
Why Django and why now?
Python is the easiest to start with AND it's made for the pros (such as building Artificial Intelligence)
Why eCommerce? Why not social networking?
I do have course called Tweetme that covers building twitter-like service. That course will show you how to create a social network step-by-step. I do encourage you to take that course but I'll say this course should be taken first for a key reason...
Validation. Proving any project is worth your effort and time can be very challenging. Proving that a social network is viable is also VERY VERY challenging. eCommerce, on the other hand, it's very clear if your project is working: it's either making sales or it's not.
Here's the thing. I want you to build a super successful project and change your life as a result of that project. I believe the only way you can do that is by committing yourself to working through projects from start to finish. This project is the result of everything I've ever done and learned in programming. I show you step-by-step to help you learn the context of how all of this is used. Along the way, I'll explain the WHY behind the HOW.
It's an amazingly exciting time to get into coding/programming/software development/technology! I hope you join me.
Thank you,
Justin