DEV Community

Nadim Chowdhury
Nadim Chowdhury

Posted on • Edited on

2

How do you create a full backend API for an eCommerce website using Python Django?

In this guide, I will outline the file and folder structure required to build a full backend API for an eCommerce website using Django and Django Rest Framework (DRF). I'll also include the documentation links for each section to give you detailed references, but I will not include specific code. This structure assumes you're building an API that will handle categories, products, users, orders, etc.

Folder and File Structure

Here is the recommended file and folder structure for your Django eCommerce backend API project.

ecommerce-backend/
│
├── ecommerce_backend/          # Django Project Root
│   ├── __init__.py
│   ├── settings.py             # Settings for the entire project
│   ├── urls.py                 # Project-level URL configuration
│   ├── wsgi.py                 # WSGI entry point
│   ├── asgi.py                 # ASGI entry point (if using async)
│   └── manage.py               # Command-line utility for the project
│
├── apps/
│   ├── users/                  # App for handling user accounts
│   │   ├── migrations/         # Migration files for database changes
│   │   ├── __init__.py
│   │   ├── models.py           # User models
│   │   ├── serializers.py      # User serializers
│   │   ├── views.py            # User views (authentication, registration, etc.)
│   │   ├── urls.py             # URLs related to user actions
│   │   ├── permissions.py      # User permissions (admin, customer)
│   │   └── admin.py            # Register user model to Django admin
│
│   ├── products/               # App for managing products
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── models.py           # Models for Product, Category, etc.
│   │   ├── serializers.py      # Serializers for transforming models into JSON
│   │   ├── views.py            # Product views for listing, creating, etc.
│   │   ├── urls.py             # URLs related to product actions
│   │   └── admin.py            # Register product and category models to Django admin
│
│   ├── orders/                 # App for managing orders
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── models.py           # Models for Order, OrderItems
│   │   ├── serializers.py      # Order serializers
│   │   ├── views.py            # Views to handle order placement, status tracking, etc.
│   │   ├── urls.py             # URLs related to orders
│   │   └── admin.py            # Register order models to Django admin
│
│   ├── payments/               # App for handling payment processing
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── models.py           # Models for Payment, Transaction, etc.
│   │   ├── serializers.py      # Payment serializers
│   │   ├── views.py            # Views for handling payments
│   │   ├── urls.py             # URLs related to payments
│   │   └── admin.py            # Register payment models to Django admin
│
│   ├── cart/                   # App for managing shopping cart
│   │   ├── migrations/
│   │   ├── __init__.py
│   │   ├── models.py           # Models for Cart, CartItems
│   │   ├── serializers.py      # Cart serializers
│   │   ├── views.py            # Views to handle cart-related actions (add, remove, update)
│   │   ├── urls.py             # URLs related to cart
│   │   └── admin.py            # Register cart models to Django admin
│
├── env/                        # Virtual environment for Python dependencies (if using)
├── .gitignore                  # Git ignore file (to avoid committing unnecessary files)
├── requirements.txt            # List of Python dependencies
├── README.md                   # Documentation for your project
Enter fullscreen mode Exit fullscreen mode

Key Components of the Structure

1. Project Root (ecommerce_backend/)

  • settings.py: Configure your entire project here. Make sure to include apps like rest_framework, users, products, orders, etc.
  • urls.py: Central routing file that includes URLs for all the apps in the project.
  • wsgi.py and asgi.py: WSGI and ASGI files for serving the application (ASGI is used for async features like WebSockets).

  • Documentation:

2. Users App (apps/users/)

  • models.py: Define the User model (extend AbstractUser if customizing). This app will handle user registration, login, profile management, etc.
  • serializers.py: Serialize user data (login, signup) for JSON responses.
  • views.py: Define views for user registration, authentication, and profile updates.
  • urls.py: Routing for user-related actions (like /api/users/register/, /api/users/login/).

  • Documentation:

3. Products App (apps/products/)

  • models.py: Define Product, Category, and other related models (e.g., Brand, Attributes).
  • serializers.py: Serialize product data to JSON for API responses.
  • views.py: Handle CRUD operations for products (create, read, update, delete).
  • urls.py: Routes for accessing product data (like /api/products/).

  • Documentation:

4. Orders App (apps/orders/)

  • models.py: Define models for Order, OrderItem (relating products to orders), and their status.
  • serializers.py: Serialize order data for the API.
  • views.py: Handle the placement and management of orders.
  • urls.py: API routes for orders (like /api/orders/).

  • Documentation:

5. Payments App (apps/payments/)

  • models.py: Define models for payment transactions and statuses.
  • serializers.py: Serialize payment data for API responses.
  • views.py: Handle payment-related operations (integration with payment gateways).
  • urls.py: Routes for payment-related actions (like /api/payments/).

  • Documentation:

6. Cart App (apps/cart/)

  • models.py: Define models for Cart and CartItems.
  • serializers.py: Serialize cart data.
  • views.py: Handle adding, removing, updating cart items.
  • urls.py: API routes related to the cart (like /api/cart/).

  • Documentation:

Requirements

  • Virtual Environment: Make sure to create a virtual environment and install the necessary dependencies.
# Create virtual environment
python -m venv env

# Activate the virtual environment
source env/bin/activate  # MacOS/Linux
.\env\Scripts\activate   # Windows

# Install dependencies
pip install django djangorestframework
Enter fullscreen mode Exit fullscreen mode
  • Dependencies File: Add dependencies to requirements.txt.
Django>=3.2,<4.0
djangorestframework
django-cors-headers   # For handling CORS in APIs
psycopg2              # For PostgreSQL integration (or another DB driver)
stripe                # If you're using Stripe for payments
Enter fullscreen mode Exit fullscreen mode

Database

  • Default: Django uses SQLite for local development, but for production, it’s recommended to use PostgreSQL or MySQL.

  • Configure Database: In settings.py, you can configure the

database settings.

Documentation:

Admin Panel

For managing your eCommerce backend, Django’s admin panel allows you to manage products, orders, users, and more.

  • Register Models: Each app has an admin.py file where you register the models to appear in the Django admin.

Documentation:


This structure will serve as a solid foundation for a scalable and maintainable eCommerce backend API built with Django. You can add more advanced features as you go, such as:

  • Authentication: Use JWT for secure token-based authentication.
  • Pagination, Filtering, and Search: Add support for paginating and searching through large lists of products.
  • CORS Support: Add django-cors-headers for allowing API requests from different origins.

Further Reading and Documentation:

Support My Work ❤️

If you enjoy my content and find it valuable, consider supporting me by buying me a coffee. Your support helps me continue creating and sharing useful resources. Thank you!

Connect with Me 🌍

Let’s stay connected! You can follow me or reach out on these platforms:

🔹 YouTube – Tutorials, insights & tech content

🔹 LinkedIn – Professional updates & networking

🔹 GitHub – My open-source projects & contributions

🔹 Instagram – Behind-the-scenes & personal updates

🔹 X (formerly Twitter) – Quick thoughts & tech discussions

I’d love to hear from you—whether it’s feedback, collaboration ideas, or just a friendly hello!

Disclaimer

This content has been generated with the assistance of AI. While I strive for accuracy and quality, please verify critical information independently.

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →