🍕 Pizza Ordering Project - Folder Structure & Code Overview

📁 Folder Structure
pizzaproject/
├── db.sqlite3
├── manage.py
├── orders/
│   ├── migrations/
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── pizzaproject/
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── templates/
    ├── base.html
    ├── home.html
    ├── login.html
    ├── my_orders.html
    └── signup.html
⚙️ settings.py Configurations
  • 📦 'orders' added to INSTALLED_APPS
  • 📁 templates/ folder added in TEMPLATES -> DIRS
  • 🔑 LOGIN_REDIRECT_URL = '/', LOGOUT_REDIRECT_URL = '/login/'
import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS = [
    ...
    'orders',
]

TEMPLATES = [
    {
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
    },
]

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/login/'
🔗 urls.py Configuration
from django.contrib import admin
from django.urls import path
from orders import views as orders_views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', orders_views.home_view, name='home'),
    path('my-orders/', orders_views.my_orders_view, name='my_orders'),
    path('add_to_order/', orders_views.add_to_order_view, name='add_to_order'),
    path('signup/', orders_views.signup_view, name='signup'),
    path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
🍕 models.py - Pizza & Order Models
class Pizza(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

class Order(models.Model):
    STATUS_CHOICES = (
        ('Pending', 'Pending'),
        ('Approved', 'Approved'),
        ('Delivered', 'Delivered'),
    )

    pizza = models.ForeignKey(Pizza, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    total_price = models.DecimalField(max_digits=7, decimal_places=2)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='Pending')
    created_at = models.DateTimeField(auto_now_add=True)
🧑‍💼 admin.py Customization
from django.contrib import admin
from .models import Pizza, Order

class OrderAdmin(admin.ModelAdmin):
    list_display = ('id', 'user', 'pizza', 'status', 'total_price', 'created_at')
    list_filter = ('status', 'created_at')
    search_fields = ('user__username', 'pizza__name', 'id')

admin.site.register(Pizza)
admin.site.register(Order, OrderAdmin)
🧑‍💻 views.py Summary
  • signup_view - Register new user
  • home_view - Display all pizzas
  • add_to_order_view - Add pizza to order
  • my_orders_view - Show logged-in user's orders
📄 Template Files (Bootstrap-based)
  • base.html - Master layout (Bootstrap + Navbar)
  • home.html - Pizza listing with order form
  • my_orders.html - Table view of placed orders
  • login.html - Login form
  • signup.html - Signup form
✅ මෙම Bootstrap-based HTML සටහන ඔබේ Django project එකේ structure එක හොඳින් documentation එකක් වශයෙන් හඳුන්වා දෙන අතර, project එකේ folder/file structure සහ code setup එක අයුරු පිළිබඳව සිංහලෙන් පැහැදිලි කිරීමක් වේ.