
Build a real-world, multi-vendor restaurant marketplace with geo-based location search using Geo, Django, and Google APIs, while mastering custom user models, signals, token verification, and Ajax crud operations.
Demonstrate building a Django multi-vendor e-commerce platform with Google API search for restaurants by name or food, dynamic hours, dashboards for vendors and customers, and PayPal and Razorpay payments.
Explore a rough flowchart for a multi-vendor food marketplace, covering customer and vendor registrations, admin approval, login, restaurant dashboards, menu publishing, marketplace search, cart, payments, and admin commission.
Install Git Bash and Visual Studio Code on Windows, macOS, or Linux; use Git Bash to run commands, open the editor with code ., and set up a virtual environment.
Create a virtual environment to isolate project dependencies and prevent conflicts with global packages. Activate the environment, verify isolation with freeze, and prepare to start a Django project.
Install django in a virtual environment, then create a django project with django-admin startproject. Activate the environment, open the folder in VS Code, and run python manage.py runserver.
Learn to replace the default Django page with a custom homepage by creating the home URL and view that returns hello world, and prepare for templates and a GitHub repository.
Set up a GitHub repository for the django project, create or sign in to GitHub, initialize git, configure identity, add a django gitignore, and push to main.
Configure Django templates by creating a templates folder, wiring render in views, adding home.html, updating settings to include templates, and running the server to render the template.
Run python manage.py migrate to create missing tables, then create a superuser with python manage.py createsuperuser and access the Django admin to log in, with PostgreSQL planned later.
Learn why a ready-made html5 template speeds frontend work while focusing on backend development, with the edited food online template and original bakery template provided for you.
Unzip the template and inspect its files, including the assets folder with css, javascript, logos, and fonts. Plan to start the index page next.
Configure Django static files by creating a static folder, setting static url and root, loading static in templates, and linking css, javascript, and images for the home page.
Run python manage.py collectstatic to copy all static files into the static root for production. Understand that in development, these files work without running the command.
Learn why we switch from SQLite to Postgres for a scalable Django project, leveraging Postgres' open-source, MVCC-enabled architecture to handle large data with concurrent access.
Configure Django with a Postgres database by creating a new database, updating settings, installing the Postgres driver package, migrating initial tables, and creating a superuser to access the admin panel.
Secure sensitive data in django with python decouple and a .env file, configuring secret keys, debug, and database credentials. Ignore the file with gitignore and push code with sample env.
Create a custom django user model and manager in an accounts app, using email as login, with fields like first name, last name, username, email, phone, and a role.
Learn how to migrate a custom Django user model by deleting the existing default auth_user conflict, re-creating the database, running makemigrations and migrate, and registering the model in admin.
Learn to make the password field noneditable in Django’s admin by creating a custom user admin, configuring list display and ordering, and registering the model for the admin panel.
Create registration pages for restaurants and customers. Link user profiles to the user and include profile picture, cover photo, address, latitude, and longitude.
Create a Django user profile model one-to-one with the user, including profile picture and cover photo fields. Configure media, register in admin, and use post_save signals to auto-create profiles.
Configure Django media files by setting media URL and media root, creating a media folder, and routing uploads for profile pictures and cover photos into the media directory.
Learn how Django signals connect model events to actions, auto-creating a user profile when a user is created using post_save and a receiver.
Explore Django signals and a flowchart-driven dual registration for customers and vendors, including license uploads, admin verification, and restaurant onboarding in a multi-vendor ecommerce marketplace.
Learn to build separate customer and restaurant registration forms in a Django multi-vendor ecommerce app, wiring URLs, views, and basic http responses for user registration.
Discover how template inheritance in django splits pages into header, content, and footer using a base html and includes, enabling a shared header and footer across pages.
Learn to implement a customer registration form in Django by loading accounts/register_user.html with render, using template inheritance for header and footer, and organizing per app.
Create a Django model form for customer registration, mirroring the user model fields (first name, last name, username, email, phone) and adding password and confirm password handling.
Hash the user password before saving data. Use the set_password method on the user instance or the create_user method with cleaned data to store a hashed password and normalized email.
Demonstrates validating a Django registration form by handling field errors for unique email and username and non field errors raised from the form's clean method, including password confirmation.
Learn to implement the Django messages framework to display success alerts after form submissions, configure middleware and context processors, and render Bootstrap alert messages in templates.
Create and link a static css file to implement a bottom-right toast animation for Django messages, styling dynamic alerts (success, error) with Bootstrap classes for a polished notification.
Apply frontend tweaks to prepare the restaurant registration feature, fixing logo navigation, loading images from static, separating login and register buttons, and aligning layout through targeted css and bootstrap utilities.
Push the project to GitHub after checking git status, add and commit changes, then verify the commit on GitHub before the next restaurant model video.
Create a vendor model linked one-to-one to a user and user profile, storing the restaurant name and a license image, with approval, timestamps, and admin registration.
Set up the vendor registration page by adding a register vendor URL pattern, view, and template; render the vendor onboarding form using register_vendor.html.
Build a Django vendor registration flow by combining user and vendor forms, handling license file uploads, and saving linked user and vendor records with validation and redirect.
Configure the vendor admin in Django by setting list_display to show user, vendor code name, and created at, and enable clickable links for user and vendor to access details.
Implement login and logout flows, push vendor registration code to GitHub, configure authentication URLs and views, and craft a login page with bootstrap styling for the next step.
Implement a Django login/logout flow by posting email and password, authenticating and logging in users, showing success or error messages, redirecting to a dashboard, and enabling logout with account navigation.
Restrict login and registration pages for authenticated users by checking request.user.is_authenticated, showing a 'you are already logged in' warning, and redirecting to the dashboard.
Detect user roles on login and redirect to the appropriate vendor or customer dashboard using the get role function, my account flow, and login required.
In Django, enforce role-based access for a two-dashboard ecommerce system, preventing customers from vendor pages and vendors from customer dashboards, with a 403 page for unauthorized access.
Push the updated project to GitHub after inspecting status, staging changes with a descriptive commit message like 'customer and vendor registration,' and verifying the push to main.
Configure Django to use Gmail SMTP for sending token verification links to users during registration in a multi-vendor ecommerce system, loading email credentials from a config file and enabling TLS.
Learn to send a verification email in Django by encoding the user id, generating a token, and delivering an activation link via a template and activate route.
Activate a user by decoding the encoded uid and token from the verification link, validating the token, then setting is active to true and redirecting to my account.
Build a three-step forgot password flow: send a reset link with encoded user id and token, validate on click, then present a password reset form.
Demonstrates building a Django forgot password flow by sending a validation link via email, reusing a single function for verification and reset emails with dynamic subject and template.
Explains validating a password reset link by decoding the uid and verifying the token, storing the uid in session, presenting a reset password form, and setting the new password.
Commit code, stage modified files, and push updates to GitHub as you implement the forgot password feature during a multi-vendor ecommerce build.
Learn to implement admin approval for vendors in a Django marketplace, triggering email notifications when a vendor's status changes via a custom save method and an approval email template.
Set up vendor and customer dashboards by integrating front-end templates into Django and loading static assets, then create reusable sidebars and enable profile customization.
Fix the dashboard sidebar icons by updating HTML classes to display a shopping cart for my orders, a profile settings icon, and a lock for change password.
Learn to configure Django url routing for a multi vendor dashboard, including accounts, vendor profile, and dashboard redirects, with template inheritance and reusable cover sections.
Load the vendor profile image and cover photo dynamically in a Django multi-vendor ecommerce app by uploading images in the admin panel and displaying them on the vendor dashboard.
Learn to expose the vendor object to all HTML pages by creating a Django context processor get_vendor(request) that returns a dictionary added to the request context and registered in settings.
Fix anonymous user error in a Django context processor by safely handling request.user when unauthenticated, returning none to prevent iterability errors, and validating login/logout flows.
Edit the vendor dashboard to place an overview above recent orders, create responsive bootstrap cards for total orders and revenue, and link numbers to revenue and order pages.
Push current changes to GitHub, committing the vendor and customer dashboard updates. In the next step, focus on the my restaurant page.
Welcome to the Project-Based Django Web Development Course where you will learn to develop a fully-featured Multi-vendor Restaurant Marketplace website with location-based search, nearby restaurants, and many more complex functionalities.
I designed this course, for anyone seeking to learn and build a Django-based custom web application. By the end of this course, you will be able to analyze, design, and develop your own Multi-vendor Restaurant Marketplace website and deploy it on the live server with the custom domain name.
Master the Basic Fundamentals of Django before you dive into the custom functionalities:
This course is also for absolute beginners, you don't need to have any prior knowledge of Django. I've included the Django refresher section in this course where you can start from absolute basics. You will be learning the fundamentals of Django by building an Employee Directory website and a TODO app, where you learn about CRUD operations.
If you already have a basic knowledge of Django, you can safely skip this Django refresher section and start building the Multi-Vendor Marketplace Project.
However, as a prerequisite, the basic knowledge of Python and a little bit of html/css and javascript are required to get started with this course.
You don't need to be a master in these technologies, you just need to be able to understand what we are doing on the front end, that's all.
Features List:
Purchase & Implement a template (free for you)
PostgreSQL Database Configuration
Custom user model, Static files, Media files & Django signals
User Registration, Django messages, and errors
Vendor registration and authentication functionalities
Token verification & Email Configuration
Vendor approval by admin, dashboards
Make restaurant profile forms & custom validators
Implement Google Autocomplete field
Menu Builder - Category CRUD functionalities
Menu Builder - Food Items CRUD functionalities
Marketplace implementation
Cart functionalities without refreshing the page - AJAX request
Cart functionalities with frontend
Basic & Smart search functionalities
Location-based search functionalities with nearby restaurants
Get the user's current location & show nearby restaurants on the homepage
Dynamic Business hours module with AJAX
Dynamic Tax Module
Customers app and profile building
Orders model and checkout page
Place an order and generate an order number
Implement PayPal payment gateway
After order functionalities
Implement Razorpay Payment Gateway
ManyToMany Relationship & Vendor Dashboard
Custom middleware, total revenue per vendor, current month's revenue
Integrate Email Templates
Make the site mobile-friendly (responsive)